
抱歉,如果我的問題很愚蠢,但我無法理解兩件事。假設我正在做所寫的例子這裡:
[...]您想要從筆記型電腦連接到http://www.ubuntuforumsorg 使用 SSH 隧道。您將使用來源連接埠號碼 8080(備用 http 連接埠)、目標連接埠 80(http 連接埠)和目標伺服器 www.ubuntuforums.org。 :
ssh -L 8080:www.ubuntuforums.org:80 <host>
其中
<host>
應替換為您的筆記型電腦的名稱。
Q1:我實際上可以透過這個實現什麼?在遠端伺服器上,沒有可用的 sshd,因此流量使我的 PC 未加密,對吧?我需要這個做什麼?
Q2:我正在嘗試執行 ssh -L 4444:linuxpl.com:80 localhost。當我進入http://本地主機:4444在我的網頁瀏覽器中,我可以看到 LiteSpeed Web Server 的內部網站。當我嘗試其他頁面時,我可以看到 Apache 內部網站。當我嘗試其他網站時,我可以看到網站的 404 頁面未找到訊息。不過,其中一些可以按預期工作。為什麼會出現這種情況?如何修復它?
答案1
Q1:你不會想這麼做的。該頁面的措辭很愚蠢。正如您所說,從您的電腦到您的電腦的流量將被加密,然後完全未加密地到達論壇網站。他們可以透過使用另一台電腦轉送流量(例如繞過防火牆)來解釋這一點。
教程的意思是「你想連接到論壇透過你的筆記型電腦來自另一台機器”,這樣就更有意義了。
Q2:如果你打開http://本地主機:4444/在你的機器上,它會向論壇發出 HTTP 請求,但它會告訴論壇你想要 host localhost
,而不是linuxpl.com
。然後,伺服器可能會返回預設頁面,而不是您想要的實際虛擬主機,因為它使用虛擬主機並且localhost
不會映射到與linuxpl.com
.
所以總而言之,透過 ssh 隧道轉送 HTTP 流量很多時候並不那麼容易。轉發到某個地方的代理會效果更好。
要讓瀏覽器發送正確的標頭,您可以透過設定主機檔案來聲明目標位址是您的電腦來成功。這樣,當瀏覽器解析地址時,它將連接到您的本機計算機,並仍然告訴 HTTP 伺服器正確的主機名稱。
您可以透過新增行來嘗試此操作
127.0.0.1 linuxpl.com
到/etc/hosts
答案2
Q1:我在沒有網路的環境中使用它。想像一下,您正在一個不允許連接到外部世界的網路中運行您的筆記型電腦,但是有一台機器可以連接到外部世界和您的筆記型電腦所在的網路。 ,以便您的網際網路流量透過授權電腦進入外部網路。
連接是這樣的:當你輸入http://本地主機:4444ssh 將接收請求,並將其傳送至主機,然後主機將其傳送至 linuxpl.com:80。您的筆記型電腦和主機之間的連線透過 ssh 加密,主機和網際網路之間的連線未加密,即 ssh 僅在兩台電腦之間轉送和加密訊息。
Q2:不太明白問題是什麼,但是ssh -L 4444:linuxpl.com:80 localhost 並沒有真正意義...因為你在你的機器和你的機器之間建立隧道..... .