通过 HTTP(S) 进行 SSH

通过 HTTP(S) 进行 SSH

我在 work.com 上有一个 apache 服务器,它只允许通过常用端口 80 和 443 传入 HTTP 和 HTTPS 请求。这些是网络上唯一开放的端口。

我希望在家时能够通过 SSH 进入服务器,但 IT 拒绝打开端口 22。

有没有办法配置 apache 以接受地址 ssh.work.com 上的 SSH 流量并将其转发到端口 80 上的 sshd?

答案1

安全组以此目的。

答案2

如果您需要 shell 访问权限,您应该从您的组织处获取它,而不必做一些奇怪的事情来获取它。

话虽如此,你可以安装网页外壳或者任意期限并完成您需要的操作,但请获取正常的 shell 访问权限,否则您可能会遇到麻烦。当您需要在家用机器上从我们都知道的代理网络之一获取 shell 时,webshel​​l 技巧非常有用。

答案3

本指南使用开瓶器

答案4

首先,如果您要尝试在非标准端口上运行 ssh 以打破本地 IT 政策(我认为这些政策是错误的),则使用 443 而不是 80 是正常的。这是因为 http 通常由组织代理;这种代理通常是透明的,因此很难判断它是否正在发生。相比之下,HTTPS 是端到端加密的,通常无法代理,因此大多数组织要么不费心,要么将代理配置为简单的直通。这使得 TCP/443 成为非标准 ssh 比 TCP/80 更安全的选择。我注意到,Joschi 建议使用 sslh,旨在与 https 共存,而不是与 http 共存。

尽管如此,据我所知,ssh 不支持任何类型的虚拟主机名支持,因此如果解析到已经在 TCP/443 上运行真实 Apache 侦听器的 IP 地址,则使用 ssh.work.com 将不起作用。但是,如果您在工作机器上有一个可用于此目的的公共 IP 地址,则可以将 sshd 配置为在端口 443 上运行,方法是

Port 443

然后sshd_config只需使用标志将远程 ssh 客户端指向您的 ip 地址即可-p 443

如果您不能为此腾出一个 IP 地址,那么 sslh 就是您的最佳选择。

相关内容