我们做好内网穿透以后
虽然可以对外提供服务
但是如果出了某些问题或者我们需要修改内网服务器上的东西
我们是无法直接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
Comments NOTHING