本文介紹一種遠(yuǎn)程訪問本地電腦的一種方法
利用ssh反向代理
以一臺處于公網(wǎng)的服務(wù)器作為媒介
從公網(wǎng)服務(wù)器上實現(xiàn)遠(yuǎn)程訪問處于局域網(wǎng)的本地電腦
應(yīng)用場景
訪問處于局域網(wǎng)下的本地電腦
我們知道
本地電腦沒有公網(wǎng)ip
無法實現(xiàn)遠(yuǎn)程訪問
但在同一局域網(wǎng)下
是可以訪問的
但是這樣局限性比較大
當(dāng)你出門在外卻想要訪問處在寢室的本地電腦時
這時如果該怎么辦
實現(xiàn)遠(yuǎn)程訪問
要求
有一臺處于公網(wǎng)的服務(wù)器
作用:訪問本地電腦的媒介
配置
在處于局域網(wǎng)下的本機電腦執(zhí)行命令
建議在root用戶下
$ ssh -NCfR 1111:localhost:22 username@IP -p 22
解釋
-f 在后臺執(zhí)行
-N 不實際連接而是做port forwarding
-R 做反向ssh
將公網(wǎng)服務(wù)器A的1111端口映射成連接內(nèi)網(wǎng)服務(wù)器與該公網(wǎng)服務(wù)器的反向ssh的端口22渔工。
username是你登錄公網(wǎng)服務(wù)器的用戶名袖迎,IP為服務(wù)器的公網(wǎng)ip
然后輸入登錄服務(wù)器A的密碼即可
修改公網(wǎng)機器A的SSH配置文件/etc/ssh/sshd_config
添加
GatewayPorts yes
這樣可以把監(jiān)聽的端口綁定到任意IP 0.0.0.0上
否則只有本機127.0.0.1可以訪問
服務(wù)器開啟對應(yīng)端口的防火墻
使用端口1111去映射本地端口22
那么服務(wù)器的端口1111肯定是要開啟的
初步遠(yuǎn)程登錄
首先在任何一臺機器上登錄公網(wǎng)服務(wù)器
windows上同樣可以使用 cmd登錄
$ ssh root@公網(wǎng)ip
$ ssh 本地登錄用戶名@localhost -p 1111
這個端口號可以隨意設(shè)置
不要和其他一些默認(rèn)的端口號一樣就可以
問題
每次登錄都需要密碼
可以創(chuàng)建密匙
實現(xiàn)ssl免密登錄
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
#-t 指定類型仪或,-f指定文件生成路徑,-P指定文件密碼(''表示無密碼)
ssh-copy-id -i .ssh/id_rsa.pub username@IP
# 這里的username為公網(wǎng)服務(wù)器的登錄名
這種反向代理不穩(wěn)定
使用autossh建立穩(wěn)定隧道
注意:此前提是可以本地可以免密登錄服務(wù)器
$ apt-get install autossh
# 我的本機是ubuntu
# 如果是centos
#使用命令 $ yum install autossh
$ autossh -M 8888 -NCfR 1111:localhost:22 -o ServerAliveInterval=60 公網(wǎng)服務(wù)器登錄名@公網(wǎng)ip -p 22
有可能長時間沒有操作
會斷開
用autossh 自動重連
我們用一個端口8888去監(jiān)聽
并且用-o ServerAliveInterval=60
每隔60秒去操作一下(比較接地氣的說法)
每次開機后都要重新輸入命令
可以寫一個腳本
開機自啟
這樣就比較完美了
我的微信公眾號:跨時代的jay
關(guān)注我哦,定時推送知識