使用一台公共 SSH 伺服器設定從 A 到 C 的直接 SSH 連接,無需公共 IP

使用一台公共 SSH 伺服器設定從 A 到 C 的直接 SSH 連接,無需公共 IP

我有這些 SSH 伺服器/客戶端:

A - 沒有公共IP

B-公共IP

C - 沒有公共IP

我知道,我可以如下建立從 A 到 C 的 SSH 連線:

1)將C鉤到B。

ssh -R 10100:localhost:22 B_IP

2) 使用 B 鉤子設定從 A 到 C 的連接埠轉發,以便能夠在機器 A 上使用 ssh-agent:

ssh -L 5000:localhost:10100 B_IP

3)現在我可以使用我的 ssh 密鑰從 A「直接」存取 C:

ssh -p 5000 localhost

……我的觀點是:

我能否以某種方式建立從 A 到 C 的新「純粹」連接這樣當機器 B 宕機後,我可以繼續我的工作嗎?

我認為只要這兩台電腦意識到它們已經共享連接就應該有可能,還是我錯了?

感謝您的時間和想法:)

答案1

  • 通常方法是在A或C的路由器上設定「NAT連接埠轉送」。 (如何完成取決於路由器,但到處都有說明。)一旦這樣做,您就可以連接到C路由器的公共地址+“轉發”端口,並且連接將通過C。

    (註:NAT埠轉送和SSH埠轉送類似但截然不同東西,例如錘子和螺絲起子。不要混淆他們。

  • 如果您沒有任一路由器的管理存取權限,您可以嘗試使用 UPnP 或 NAT-PMP 來設定連接埠轉送規則,就像許多遊戲和 P2P 程式所做的那樣。為此,請使用upnpcnatpmpc命令。

  • 如果上述方法都不起作用,您將需要某種形式的NAT打洞。 (另請參閱傳輸控制協定ICMP打孔文章。

    不幸的是,雖然它被廣泛用於各種具體的程序好像不多通用的不過 TCP 工具喬納特可能有效。

答案2

這可能是不可能的,除非您可以在路由器上執行某種連接埠轉送 - 但在這種情況下,您根本不需要電腦 C。

問題是,在您的範例中,您不是直接從 A -> C,封包仍然穿過 B。

如果您有另一台具有公共位址的計算機,您可以在星形拓撲中設定 VPN,並使用 VPN 之間的路由來建立一個虛擬網絡,其中任何一個公共主機都可以崩潰,並且一切都可以繼續工作。我已經使用 OpenVPN 完成了此操作 - 有一些問題 - 其中一個重要的問題是停用反向路徑過濾。

答案3

實現此目的的一種方法是使用對等 VPN - 這種 VPN 不需要其中一台主機具有指向它的靜態 IP 位址或靜態網域名稱。下面提到的其他想法並不是真正的 VPN,而是透過某種協定建立點對點連線的軟體。以下是一些選項:

基於毒聊網路:

我個人嘗試了這兩種解決方案,但它們被我工作的(大公司風格)網絡阻止了。

  • 毒VPN- 截至今天,似乎維護得不好,但應該可以使用。
  • 吞托克斯- 類似的想法,雖然它不是真正的VPN,但可以在tox網路上的兩台機器之間建立連接並轉發ssh連接埠。 README 中提供了 ssh 的範例。
基於公共、非免費的聊天服務

我個人還沒有嘗試過這些方法,我懷疑它們是否有效,但它們可能值得嘗試。

  • 區域網路方VPN- 基於不和諧。截至今天,似乎維護得不是很好,自述文件也沒有包含很多範例,但也許值得檢查。
  • 機器人- 看起來維護得不是很好。而且安裝似乎很難 - 使用谷歌語音(以前的 GTalk)。
基於公共伺服器(由其他人維護)的VPN

個人經驗:嘗試過n2n,但被我工作的(大公司風格)網絡阻止了。

  • n2n- 使用“超級節點「 這是由恩托普n2n團隊 - 它根據的 README運行supernode.ntop.org:7777(超級節點也是免費軟體,但運行它再次需要一個可公開訪問的伺服器)。
  • 努貝拉- 類似的概念n2n,但不是超級節點它被稱為燈塔。他們不提供公共燈塔供每個人使用,但您實際上必須dnclient在公共可用的 VPS 上運行它們,如中所述他們的文檔。因此它不能滿足您的要求,但我認為它仍然值得一提。
其他需要付費訂閱的 VPN 解決方案。

與大多數商業 VPN 服務不同,只有少數針對高級用戶的服務允許兩個用戶透過您獲得的 VPN 子網路相互通訊。可能還有其他可用的提供者可以提供此功能。這是一個:

以社區維護為基礎的網絡

即使在重度 NAT 後面,如果您的防火牆限制不太嚴格(在我的情況下並非如此),您也可以執行以下任一操作(不是 VPN):

  • 托爾- 嘗試本指南。基本上,您正在建立一個.onion網域(tor 服務),世界各地的 tor 使用者都可以存取。
  • i2pd- 嘗試本指南其中還有我推薦的客戶i2dp的說明。i2p
最後的解決方案

即使您可能受到最煩人的防火牆、NAT 和其他網路限制,您也應該能夠使用精彩的功能https://tmate.io/免費(如免費啤酒和自由言論)軟體和服務。但它有一些缺點:

  • 沒有互動式命令(請參閱問題 #179)。
  • 沒有scp支援。
  • tmuxfork 所基於的版本是截至今天的版本2.6.0,而當前 tmux 的最新版本是3.3a- 這意味著為了讓您~/.tmux.conf工作~/.tmate.conf,您必須進行重要的調整(請參閱例如來自我的個人點文件)。

儘管 tmate 的維護者沒有明確提及這一點,但我認為提到的第一兩個缺點是有意的限制,因為人們可以濫用這些能力透過 的tmate.io伺服器傳輸大量資料。因此,這tmate實際上為您的 shell 提供了一種「遠端桌面」。您必須找到其他方法在兩台機器之間傳輸檔案(考慮同步事物)。

總而言之,tmate 的易用性和出色的性能使其成為我認為最好的解決方案。加上同步事物對於傳輸文件,我認為這是最好的解決方案,也是最可靠的解決方案。

相關內容