我在公司防火墙(允许通过http和https端口但不能通过ssh 22)后面有一个linux fedora21客户端便携式计算机,并且在我自己的路由器后面的家里有一个linux fedora21服务器。当我指定家庭服务器的公用IP地址时,使用https可以浏览(因为我配置了家庭路由器)
是否可以通过http / s端口ssh(远程shell)到我的家庭服务器?
我看到了一个名为的工具corkscrew。有帮助吗?
opensshd并httpd在家庭服务器上运行。还有什么需要配置的?
我在公司防火墙(允许通过http和https端口但不能通过ssh 22)后面有一个linux fedora21客户端便携式计算机,并且在我自己的路由器后面的家里有一个linux fedora21服务器。当我指定家庭服务器的公用IP地址时,使用https可以浏览(因为我配置了家庭路由器)
是否可以通过http / s端口ssh(远程shell)到我的家庭服务器?
我看到了一个名为的工具corkscrew。有帮助吗?
opensshd并httpd在家庭服务器上运行。还有什么需要配置的?
Answers:
可能的情况取决于防火墙允许的内容。
某些防火墙采用简单的方法,并允许端口443上有任何内容。如果是这种情况,到达家用服务器的最简单方法是使其监听端口443上的SSH连接。如果您的计算机直接连接到Internet,则只需添加Port 443到/etc/ssh/sshd_config或/etc/sshd_config刚好在显示的线下方Port 22。如果您的计算机位于用于重定向传入连接的路由器/防火墙之后,请使用类似以下内容,将传入连接重定向到端口443到服务器的端口22:
iptables -t nat -I PREROUTING -p tcp -i wan0 --dport 443 -j DNAT --to-destination 10.1.2.3:22
wan0路由器上的WAN接口在哪里,10.1.2.3是家庭网络上服务器的IP地址。
如果您希望允许家庭服务器在端口443上侦听HTTPS连接和SSH连接,则有可能-可以轻松地区分SSH和HTTPS流量(在SSH中,服务器首先进行对话,而在HTTP和HTTPS中,客户端进行对话第一)。有关如何设置此设置的教程,请参见http://blog.stalkr.net/2012/02/sshhttps-multiplexing-with-sshttp.html和http://wrouesnel.github.io/articles/Setting%20up%20sshttp/并通过sshttp进行配置,并且在这些端口上运行网络服务器(nginx)时在端口80或443上使用SSH
某些防火墙阻止所有传出连接,但允许通过允许HTTPCONNECT方法有效刺穿防火墙漏洞的代理浏览网页。该CONNECT方法可能仅限于某些端口,因此您可能需要将其与上述监听端口443结合使用。
要使SSH通过代理运行,可以使用corkscrew之类的工具。如果您的Web代理是,请在您的~/.ssh/config中添加ProxyCommand以下内容http://web-proxy.work.example.com:3128:
Host home
HostName mmm.dyndns.example.net
ProxyCommand corkscrew web-proxy.work.example.com 3128 %h %p
有些防火墙甚至在端口443上也不允许SSH通信。要解决这些问题,您需要伪装SSH或将SSH隧道传输到防火墙允许的范围内。有关使用proxytunnel执行此操作的教程,请参见http://dag.wiee.rs/howto/ssh-http-tunneling/。
ProxyCommand nc -X connect -x __proxy_IP__:__port__ %h %p
您可以尝试另一种方法,设置网络服务器,该服务器可以SSH服务器,