我們做好內網穿透以後
雖然可以對外提供服務
但是如果出了某些問題或者我們需要修改內網服務器上的東西
我們是無法直接ssh過去
我們有兩種方式做ssh隧道
一:ngrok方式
如果你已經在使用ngrok了
那麼就非常簡單了
修改ngrok.cfg
server_addr: ngrok.6le6le.com:4443
trust_host_root_certs: false
#多隧道
tunnels:
tunnel1:
subdomain: aaa
proto:
http: 80
tunnel2:
subdomain: bbb
proto:
http: 8080
#新增ssh隧道
ssh:
proto:
tcp: "22"
#綁定遠程端口
remote_port: 8888
之後依然使用ngrok啓動命令
./ngrok -config ngrok.cfg start tunnel1 tunnel2 ssh
這樣,多隧道+ssh隧道就啓動了,響應如下:
ngrok (Ctrl+C to quit)
Tunnel Status online
Version 1.7/1.7
Forwarding tcp://ngrok.baidu.com:8888 -> 127.0.0.1:22
Forwarding http://aaa.ngrok.baidu.com:8081 -> 127.0.0.1:80
Forwarding http://bbb.ngrok.baidu.com:8081 -> 127.0.0.1:8080
Web Interface 127.0.0.1:4040
# Conn 0.00ms
Avg Conn Time 0.00ms
二:使用ssh反向隧道來鏈接內網ssh端口
(剛開始沒想到ngrok可以直接用,所以研究了一下,此方法無需ngrok,任何機器都可以直接使用)
1>使用ssh建立反向隧道:
將內網ssh服務到22端口綁定到雲服務器8001端口
ssh -fCNR 8001:localhost:22 root@公網ip
(據說這樣就可以了,但是我失敗了,於是執行下面的操作)
在雲服務器上將8001端口轉發到8000端口
ssh -fCNL *:8000:localhost:8001 localhost
之後ssh反向隧道就成功建立了
ssh root@公網ip -p 8000
即可成功鏈接
2>使用autossh實現自動重連
使用中發現ssh隧道經常自動斷開,這是正常的。
所以我們可以使用autossh來
實現自動重連。
首先,建立密鑰對登陸
ssh-keygen
#全部按Enter,生成密鑰位置:~/.ssh
ls ~/.ssh/
id_rsa id_rsa.pub known_hosts
將公鑰文件id_rsa.pub複製到雲服務器上,並加入到~/.ssh/authorized_keys
#複製到雲服務器後執行
cat id_rsa.pub >> ~/.ssh/authorized_keys
或者在內網服務器直接執行
ssh-copy-id root@公網ip
之後就執行autossh命令
autossh -M 8002 -qnfTCNR 8001:localhost:22 root@公網ip
-M 8002代表通過8002端口監視連接狀態,如果出現問題,就會自動重連。
寫在最後
今天算是吃了一虧,沒有查ngrok鏈接方法就直接搞ssh方法
所以大家記住,有問題先看看當前有沒有可以利用的資源
不要埋頭就是幹。。。(血的教訓啊~TAT
歡迎來我的私人博客看看:http://blog.6le6le.com/