ubuntu16.04利用ssh反向代理及autossh實(shí)現(xiàn)內(nèi)網(wǎng)穿透

內(nèi)網(wǎng)機(jī)器:A

公網(wǎng)機(jī)器:B

1、內(nèi)網(wǎng)機(jī)器(A)安裝autossh

apt-get -y install autossh

配置免密登錄

ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub root@123.123.123.123//此地址只用作舉例

啟動(dòng)端口(A)

autossh -fNR 8888:localhost:22   -p 40022 root@123.123.123.123//此地址只用作舉例

參數(shù)解釋:

-f:是指autossh后臺(tái)運(yùn)行,不會(huì)阻塞shell繼續(xù)向下執(zhí)行;
-N:是指建立的ssh連接只用于轉(zhuǎn)發(fā)數(shù)據(jù),不解析命令; 
-R:是指建立反向隧道,一般我們ssh某個(gè)服務(wù)器是正向隧道; 
8888:是公網(wǎng)服務(wù)器上的代理端口;
localhost:22:是指代理到本機(jī)時(shí)需要訪問(wèn)的ip和端口,即內(nèi)網(wǎng)機(jī)器A的ip地址+端口;
-p 40022:是外網(wǎng)機(jī)器B的ssh端口;
最后是公網(wǎng)服務(wù)器的地址,autossh會(huì)調(diào)用ssh建立到它的ssh反向隧道。

注意:autossh只有三個(gè)命令,其他命令都是通過(guò)調(diào)用ssh提供的,autossh在這里只是起到了監(jiān)聽(tīng)ssh是否斷開(kāi)并將其自動(dòng)拉起的作用。執(zhí)行完這條命令,將會(huì)在外網(wǎng)機(jī)器(B)123.123.123.123上啟動(dòng)并監(jiān)聽(tīng)8888端口,如下(外網(wǎng)機(jī)器查看)

clipboard.png

可知,該端口是默認(rèn)綁定在lo地址上的,所以在外網(wǎng)機(jī)器上反向登陸服務(wù)器時(shí),可用localhost或者127.0.0.1,但是不能使用真實(shí)網(wǎng)卡的地址去連接。

以上操作,除過(guò)查看端口的操作外,其他操作全部在內(nèi)網(wǎng)機(jī)器完成。

2、外網(wǎng)機(jī)器連接內(nèi)網(wǎng)服務(wù)器

ssh -p 8888 localhost 
或
ssh -p 8888 127.0.0.1

3、添加到系統(tǒng)服務(wù),方便管理
cd /etc/systemd/system/ && vim autossh.service

[Unit]
Description=Front autossh
After=sshd.target
[Service]
User=root
Type=simple
ExecStart=/usr/bin/autossh -p 40022  -NR  8888:localhost:22 root@123.123.123.123
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target

啟停autossh

systemctl stop|start|status autossh.service
  • 附:如果啟動(dòng)成功后,使用ps -ef |grep autossh可以看到autossh已經(jīng)啟動(dòng),但是在B上卻無(wú)法連接,也看不到啟動(dòng)的端口,那么一般就是忘記配置ssh免密登陸啦,再檢查一下咯。*
  • 以上內(nèi)容僅為個(gè)人的理解,有不對(duì)的地方歡迎指正*
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容