【译】Persistent reverse (NAT bypassing) SSH tunnel access with autossh
情況:您所在的受限制網絡(公司,酒店,醫院)中有一個“服務器”,您希望從該網絡外部訪問該服務器。?您無法將端口轉發到該計算機,但您可以在外部ssh(到您自己的服務器)。?本教程解決了這個問題。
您需要另一臺服務器,您可以使用反向隧道為其設置持久ssh連接。?然后,如果您需要訪問該計算機,請將ssh插入另一臺服務器,然后從那里通過隧道訪問受限制的計算機。
確保您有權從管理員處執行此操作。?他們通常不喜歡防火墻/安全漏洞。?他們沒有任何理由阻止它。
命名約定:
受限制的機器:限制網絡中間人的機器:受限制的機器設置隧道的機器,以及從中訪問受限制的服務器的機器
安裝工具
我們將使用autossh。?這是在debian / ubuntu存儲庫中。?確保您還安裝了openssh服務器。
執行:受限制的機器。
sudo apt-get install autossh ssh創建你的ssh-key。
執行:受限制的機器。
ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): */root/.ssh/nopwd* Enter passphrase (empty for no passphrase): *leave empty* Enter same passphrase again: *leave empty*將密鑰復制到中間人機器
執行:受限制的機器。
ssh-copy-id -i .ssh/nopwd.pub "-p 2222 remy@middleman"(用您的用戶名和中間人ssh服務器替換remy @ middleman。還要注意如何在ssh-copy-id中提供自定義端口。)
使用autossh測試連接
執行:受限制的機器
autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 6666:localhost:22 remy@middleman -p 2222“選項說明:
- -M 10984:autossh監控端口。
- -o“PubkeyAuthentication = yes”:使用ssh-keys而不是密碼進行身份驗證。
- -o“PasswordAuthentication = no”:顯式禁用密碼驗證。
- -i /root/.ssh/nopwd:要使用的ssh密鑰的位置。
- -R 6666:localhost:22:反向隧道。?將主機中間件上6666端口上的所有流量轉發到主機受限計算機上的端口22。
- remy @ middleman -p 2222:ssh用戶remy,ssh主機中間人,ssh端口2222
如果一切順利,您應該登錄中間人主機而不要求輸入密碼。?如果要添加ssh密鑰,可能會遇到問題。?對此說“是”。
如果進展不順利,請檢查ssh密鑰的權限(應為600),并確保autossh命令中的值正確。
SSH回到受限主機中
從另一臺機器(最好在受限制的網絡之外)ssh進入中間人主機。
執行:其他機器
ssh -p 2222 remy@middleman從中間人,ssh通過我們創建的反向隧道進入受限制的主機:
執行于:中間人
ssh -p 6666 remy@127.0.0.1如果一切順利,您應該看到登錄受限制機器的提示。?輸入您的密碼然后去。?如果這很順利,你可以繼續。?如果這不起作用,請檢查命令和ssh配置中的值。?還要確保您已正確執行上述步驟。
啟動時啟用隧道
我們將編輯/etc/rc.local文件。?此腳本通常不執行任何操作,但會在引導時執行。?如果您在此腳本中出現任何錯誤,您的計算機可能無法啟動,因此請確保正確執行此操作。
執行:受限制的機器
sudo nano /etc/rc.local添加(并更改)以下行
autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 6666:localhost:22 remy@middleman -p 2222 &我們在這個命令中有三個新東西:
- -N:不要在中間人機器上執行命令
- -f:掉進后臺
- &:執行此命令但不等待輸出或退出代碼。?如果未添加,則計算機可能會在引導時掛起。
保存文件,并使其可執行:
執行:受限制的機器
sudo chmod +x /etc/rc.local并測試它:
執行:受限制的機器
sudo /etc/rc.local如果你在沒有任何輸出的情況下得到正常的承諾,那么你已經做到了正確.z
轉發網站,而不是ssh
您可能希望轉發受限主機上的網站。?按照上面的教程,但更改autossh命令:
autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 8888:localhost:80 remy@middleman -p 2222- -R 8888:localhost:80:這會將主機中間人上的所有流量轉發到主機受限主機上的端口80。?(80號港口=網站)。
其他主機在受限網絡內
您還可以從網絡中的其他受限主機轉發端口:
autossh -M 10984 -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i /root/.ssh/nopwd -R 7777:host2.restrictednetwork:22 remy@middleman -p 2222這將通過主機restrictedhost將所有流量轉發到主機中間人上的端口7777到主機host2.restrictednetwork端口22。
https://raymii.org/s/tutorials/Autossh_persistent_tunnels.html
總結
以上是生活随笔為你收集整理的【译】Persistent reverse (NAT bypassing) SSH tunnel access with autossh的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VNC over reverse SSH
- 下一篇: PyTorch实战GANs