
是否有軟體可以幫助我從公共互聯網 ssh/連接到我的家庭電腦? (比如說,一家咖啡店)。
我知道有人提出了類似的問題,但似乎沒有人真正回答這個問題。讓我添加一些細節,以避免常見的有關 DynDns 和連接埠轉送的大量答案。
我可以存取可公開存取的 SSH 伺服器。僅從那裡進行連接埠轉送並不是持續數天的穩定解決方案。連接埠轉送往往會導致連線遺失、速度緩慢等。
我不想在我的路由器上設定/支付 DynDns 和設定 NAT 穿越。
我覺得以下應該是可能的,我只是不知道是否存在已經完成此任務的軟體:
就像點對點程序打洞 NAT 穿越一樣,應該可以在我的家用電腦上運行一個程序,透過打洞打開對適當連接埠的外部存取。此外,該程式可以在某處(例如在公共伺服器上或透過電子郵件)廣播家庭電腦的公共 IP 和打孔的外部可見端口,並定期更新此資訊。
有這樣的軟體嗎?此功能的一部分已經由各種 torrent 軟體實現。
答案1
我不建議在任何情況下將您的裝置放入 DMZ,除非您確實知道自己在做什麼並且能夠正確保護裝置及其周圍的網路。
有一個軟體可以透過互聯網模擬區域網,叫做登入Hamachi。透過在主機上安裝並啟用此功能,您可以透過登入網際網路上任何位置的 VLAN 來存取它。
雖然我不一定看到連接埠轉送的問題。
另一種選擇是使用 SSH 的內建連接埠轉送功能。如果在與您嘗試連線的主機(主機 2)相同的 LAN 上有另一個可透過 Internet 存取的 SSH 主機(我們稱之為主機 1),您可以發出一條命令來從您的電腦退回連線(在特定本機連接埠上)透過主機1,主機1 將您的流量路由到其LAN 中的非連接埠轉送主機2。
該命令如下所示,將在您嘗試用於連接到主機 2 的本機電腦上執行
ssh -L [local-port-to-open]:[local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1] [user-of-Host-1]@[Host-1-address]
這將在您的電腦上開啟一個[local-port-to-open]
由 SSH 管理的連接埠(您的參數),透過加密隧道從該連接埠發送任何流量,使我的[user-of-Host-1]@[Host-1-address]
參數按照 中指定的方式傳送到 Host-2 [local-IP-of-Host-2-according-to-Host-1]:[port-to-connect-to-on-Host-2-from-Host-1]
。這種方法稱為本機連接埠轉送(我不太了解遠端連接埠轉送)。
例如,假設我想從當地咖啡店連接到主機 2(未進行連接埠轉送),使用主機 1(進行了連接埠轉送)將連線彈回其 LAN。請注意,這將在遠端電腦上開啟 PTS,但可以忽略它,直到您想要關閉此隧道。然後您可以像平常一樣關閉該終端機會話。
主機 1 的公共 IP 201.31.103.212
(封裝主機 1 和主機 2 的 NAT)位於1337
用於 SSH 的連接埠上。 LAN 中的主機 2 具有SSH 的本機 IP192.168.254.40
並使用連接埠。22
主機1的登入使用者名稱是fish
。
好的,所以我只想說我有8080
未使用的本地端口,可以暫時將其用於此演示。
我要形成的命令是這樣的:
ssh -L 8080:192.168.254.40:22 [email protected]
現在打開8080
本機電腦上的連接埠並根據主機 1(即)發送到192.168.254.40
連接埠(主機 2)22
[email protected]
現在,如果您想透過 SSH 連接到主機 2,您只需在連接埠 上指定您的電腦即可8080
。假設主機 2 的登入使用者名稱是turtle
ssh [email protected] -p 8080
SSH 正在管理您的端口8080
,並將您的 SSH 請求發送到主機 1,主機 1 將其發送到主機2 127.0.0.1
。localhost
這只是偏好。
SSH 連接埠轉送的另一個用途是代理。
場景:我在學校,帶著我的個人筆記型電腦,想要訪問 Twitter,但它被屏蔽了(它實際上是在我的高中,所以我就是這麼做的)。我家裡有一台連接埠轉送的 SSH 主機,IP39.34.81.56
位於連接埠1337
。我想透過家裡的主機80
從筆記型電腦上的連接埠反彈到 Twitter 的連接(網頁伺服器通常託管在連接埠)。8080
我會在我的筆記型電腦上發出命令:
ssh -L 8080:twitter.com:80 [email protected] -p 1337
現在我可以localhost:8080
在我的網路瀏覽器中訪問,它會透過我的加密隧道路由 Twitter,從他們的伺服器到我家,然後到我學校的筆記型電腦。
我可以使用相同的方法登入一個不公開使用SSL 的網站(例如,pastebin),並確保我的憑證是安全的,因為它是使用SSH 加密的,並且僅在沒有SSH 的情況下從我的家中發送,這是我製作的當然是安全的。
祝你好運!
編輯:順便說明一下,此處顯示的 IP 位址不應該是有效位址,但萬一它們是有效位址,請不要騷擾這些 IP 位址的使用者。
答案2
是的,所以我認為連接埠轉送是打洞方法。如果您願意,您可以將電腦置於 DMZ 中並避免所有混亂。