如何通過 http 或 https 使用 ssh?
我在公司防火牆後面有一台 linux fedora21 客戶端筆記型電腦(它允許通過 http 和 https 埠,但不允許通過 ssh 22),我在自己的路由器後面有一個 linux fedora21 伺服器。當我指定我的家庭伺服器的公共 IP 地址時,使用 https 瀏覽有效(因為我配置了我的家庭路由器)
是否可以通過 http/s 埠 ssh(遠端 shell)到我的家庭伺服器?
我看到一個工具叫
corkscrew
. 那會有幫助嗎?
opensshd
並httpd
在家庭伺服器上執行。還有什麼需要配置的?
什麼是可能的取決於防火牆允許什麼。
如果防火牆允許埠 443 上的任意流量
一些防火牆採取簡單的方法並允許埠 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 ,並且當 webserver (nginx) 在這些埠上執行時,在埠 80 或 443 上也有 SSH
如果您有一個允許 CONNECT 隧道的 Web 代理
一些防火牆阻止所有傳出連接,但允許通過代理瀏覽 Web,該代理允許HTTP
CONNECT
方法有效地刺穿防火牆中的漏洞。該CONNECT
方法可能僅限於某些埠,因此您可能需要將其與偵聽埠 443 結合起來,如上所述。要使 SSH 通過代理,您可以使用corkscrew之類的工具。如果您的網路代理是,請在您的
~/.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
然後你可以通過執行來連接
ssh home
。在 HTTP(S) 中封裝 SSH
一些防火牆不允許 SSH 通信,即使在埠 443 上也是如此。為了應對這些,您需要將 SSH 偽裝或隧道化到防火牆允許通過的東西中。有關使用proxytunnel執行此操作的教程,請參閱http://dag.wiee.rs/howto/ssh-http-tunneling/。