Https
在埠 443 上執行多個服務,通過 HTTPS 隧道 SSH
情況: 我想通過 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 的 C 實現。
從網站:
sslh 允許在同一個埠上同時接受 HTTPS 和 SSH 連接。它可以在埠 443 上連接到 SSH 伺服器(例如,從公司防火牆內部),同時仍然在該埠上提供 HTTPS。此功能已作為 Perl 腳本實現。
sslh 有兩個問題:
它在 Perl 中。這意味著它非常需要 RAM,而且可能不是很快。
它不管理特權下降,這是相當值得懷疑的。
這兩個問題的明顯解決方案是用 C 重新實現它,這就是這個程序的目的。