Sshd

如何通過 http 或 https 使用 ssh?

  • October 23, 2021

我在公司防火牆後面有一台 linux fedora21 客戶端筆記型電腦(它允許通過 http 和 https 埠,但不允許通過 ssh 22),我在自己的路由器後面有一個 linux fedora21 伺服器。當我指定我的家庭伺服器的公共 IP 地址時,使用 https 瀏覽有效(因為我配置了我的家庭路由器)

是否可以通過 http/s 埠 ssh(遠端 shell)到我的家庭伺服器?

我看到一個工具叫corkscrew. 那會有幫助嗎?

opensshdhttpd在家庭伺服器上執行。還有什麼需要配置的?

什麼是可能的取決於防火牆允許什麼。

如果防火牆允許埠 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,該代理允許HTTPCONNECT方法有效地刺穿防火牆中的漏洞。該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/

引用自:https://unix.stackexchange.com/questions/190490