Https

在埠 443 上執行多個服務,通過 HTTPS 隧道 SSH

  • August 4, 2014

情況: 我想通過 HTTPS 建立 SSH 會話。我有一個非常嚴格的防火牆/代理,它只允許 HTTP、FTP 和 HTTPS 流量。

工作原理: 通過代理設置隧道到遠端 linux 機器,該機器在埠 443 上有一個 sshd 偵聽

問題: 我必須在埠 443 上執行一個 Web 伺服器(輕量級)。代理禁止到其他埠的 HTTPS 流量。

到目前為止的想法: 設置一個虛擬主機並將所有傳入的請求代理到本地主機:(例如22)

$HTTP["host"] == "tunnel.mylinux.box" {                                         
   proxy.server = (                                                            
       "" => (("host" => "127.0.0.1", "port" => 22))                           
   )                                                                           
}

不幸的是,這行不通。我做錯了什麼,還是有原因,這不起作用?

你可以使用一些 Perl 來解決這個問題:

sslh - 在 SSH 和 SSL/HTTPS 伺服器之間切換傳入連接

您可能想查看sslh 的 C 實現

從網站:

sslh 允許在同一個埠上同時接受 HTTPS 和 SSH 連接。它可以在埠 443 上連接到 SSH 伺服器(例如,從公司防火牆內部),同時仍然在該埠上提供 HTTPS。此功能已作為 Perl 腳本實現。

sslh 有兩個問題:

  • 它在 Perl 中。這意味著它非常需要 RAM,而且可能不是很快。

  • 它不管理特權下降,這是相當值得懷疑的。

這兩個問題的明顯解決方案是用 C 重新實現它,這就是這個程序的目的。

引用自:https://serverfault.com/questions/127577