通过云主机做SSH反向隧道

环境:三台主机
1、公司虚拟机A
2、云主机S
3、家庭电脑C
 
需求:家庭电脑C --> 连接公司虚拟机A,因为不在同一个局域网,所有没有办法直连,所以想到通过ssh反向隧道的方式来连接
前提:公司虚拟机A和家庭电脑C都可以连接云主机S
如图:
    image.png
【方法】
1、设置主机 S。
编辑 /etc/ssh/sshd_config 文件,在里面修改或添加:
GatewayPorts yes
重启 sshd 服务
systemctl restart sshd

2、设置主机 A。
方式一:用 ssh
ssh -fNR portS:localhost:22 userS@pubIpS
例如:ssh -fNR 7887:localhost:22 root@公网IP
# portS 是主机 S 的某个开放端口
# userS 是主机 S 的一个用户
# pubIpS 是主机 S 的公网IP

方式二:
ssh -lroot -p22 -qngfNTR 8822:localhost:公网IP -o ServerAliveInterval=10
加上 ServerAliveInterval=10,是让客户端每 10s 发送一个心跳保持隧道的链接,否则这条连接很容易被重置。

方式三:用 autossh (表示测试没有成功)
先要yum -y install autossh
autossh -M 3456 -NR portS:localhost:22 userS@pubIpS -p22
# -M 参数没大弄明白,大概是通过这个端口监听以便自动重连吧
# 输入密码后可以用 Ctrl-Z 放到后台

3、电脑 C 通过 ssh 连接上主机 S 后。这样可以通过xshell或者securecrt或者ssh方式连接主机 A:
ssh userA@localhost -p portS
# userA 为主机 A 的用户
# portS 与上一步的 portS 是同一个端口

.执行AutoSSH命令
autossh -M 5555 -NR 80:127.0.0.1:7777 root@114.114.114.114
-M:在5555端口上监听连接的变化,只要断开就重连 
少了-f 参数,因为AutoSSH本来就在后台运行

终止隧道
这将终止你从终端打开的所有ssh会话。
killall ssh
或者ps -ef|grep ssh
找到对应的进程,然后kill pid号

分享到:

如果您觉得上面的内容对您有帮助,可以打赏支持一下!

打赏

关键词:Linux

网友留言(0 条)

发表评论