通過 Internet 進行 SSH
我想通過網際網路對我的遠端設備(主要是 RPi 或類似的 SBC)進行 SSH 連接,而無需在路由器上進行任何配置。(在大多數地方訪問使用者的路由器很難/很慢)。我試圖避免像 teamviewer、husarnet 等適當的服務。
在網路方面,我是新手。
- 我從哪裡開始?
- 我應該看哪些有趣的項目?
- 你心裡有什麼?
現在在我看來,一種可能的方法可能是製作自己的 VPN 伺服器,例如https://notthebe.ee/Creating-your-own-OpenVPN-server.html。
連接到 VPN 後,我可以 ssh 到也連接相同 VPN 的遠端設備嗎?(這是正確的嗎?)
謝謝你。(也許對非常基本的問題感到抱歉)
我已經在下面回答了你的問題,但在我回答之前…
我首先會說聽起來您正在實施某種物聯網設備。在這種情況下,想要一個 SSH 連接有點不習慣。這可以與數十甚至數百個客戶一起使用。但它很快就會變得難以管理。
通常你應該:
- 將您的作業系統升級部署為完整的映像……因此,沒有遠端呼叫
apt-get dist-upgrade
可能會使設備變磚並迫使您派工程師來修復它們。- 以類似的方式部署您的應用程序,將其作為一個可自行部署的完整包發送。
- 考慮類似於Puppet的工具,它們可以在無人協助的情況下進行維護,並提供一種方法來同時發送相同的升級。
在這個領域工作過大約 3,000 台設備,如果可以避免的話,您真的不想養成通過 SSH 登錄的習慣。
始終考慮安全。如果這為黑客打開了進入使用者家庭網路的漏洞,那麼它可能會結束您的業務。
如果通過 SSH 撥入是您唯一的選擇,那麼您有幾個選擇。
反向 SSH 隧道
您可以將設備配置為通過 ssh 連接到遠端伺服器,並將埠轉發回
22
設備上的埠。通常您按需執行此操作,因此在您自己的軟體中包含一些觸發器,告訴它執行此操作。設備需要被告知要使用的“遠端”埠,然後您需要知道該埠是什麼。因此,如果遠端埠是
1234
,設備將撥出到您的伺服器:ssh -R 1234:localhost:22 remote-server.example.com
然後,您可以自己 SSH 到遠端伺服器,並使用前面提到的遠端埠從伺服器 SSH 到 IOT 設備:
ssh -p 1234 localhost
這有點令人費解,但它有效。您正在建立一個包裝在 ssh 連接中的 SSH 連接。但它有效!
永久連接的 VPN
正如您提到的,您可以設置 VPN 伺服器。我會避免此伺服器訪問您自己的網路。
您可以在網路上找到 OpenVPN 的範例,這很可能是適合這種情況的正確 VPN 技術。有幾個“gotyas”需要避免:
- 使用者確實破解了自己的設備。你不能完全阻止它。
- 您不想讓您的使用者訪問您的公司網路進行窺探。不要讓您的 VPN 伺服器訪問您公司網路上的任何內容,使其獨立。
- 不要啟用 OpenVPN 的
--client-to-client
通信。會讓客戶互相交談,這是你不想要的。但是,您將需要考慮如何使用此 VPN?從伺服器啟動 SSH 連接就可以了。否則,您將如何將筆記型電腦連接到伺服器,使其不是 VPN 客戶端。- 確保您已閱讀“自動重新連接”。VPN 在沒有警告的情況下斷開連接,客戶端將需要自動重新連接。
即插即用
大多數/所有家用路由器都支持通用即插即用。這將使您的 IOT 設備在使用者的家庭路由器上打開一個埠,讓您直接撥入。
這確實有效,但請記住,一些使用者禁用此功能,因為他們認為這是一個安全風險。例如:關於此處主題的部落格討論。