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