ssh通道的缺点就是每隔一段时间会断开一次,无法永久有效。而autossh正好解决了这一问题。
修改ssh配置
$ sudo vi /etc/ssh/sshd_config
_打开保持tcp连接设置
TCPKeepAlive yes
重启ssh
$sudo systemctl restart sshd.service
autossh命令
安装autossh
$ sudo yum install autossh
autossh执行命令
autossh -M 5678 -NR 8888:localhost:80 [email protected]
-M 5678: 通过5678端口监视连接状态,连接有问题时就会自动重连 -N:不允许执行远程命令,只做端口转发 Do not execute a remote command. This is useful for just forwarding ports (protocol version 2 only). -R 8888:localhost:80: 将 B 主机的80端口和 VPS 的8888端口绑定,相当于远程端口映射
将autossh通道做出开机自启服务
#cd /usr/lib/systemd/system
#touch autosshTest.service
#vi autosshTest.service
在autosshTest.service中新建以下内容
[Unit]
Description=autosshTest.service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
PIDFile=/run/autosshTest.pid
ExecStart=/usr/bin/autossh -M 5678 -NR 8888:localhost:80 [email protected]
Restart=/bin/kill -s QUIT $MAINPID && /usr/bin/autossh -M 5678 -NR 8888:localhost:80 [email protected]
ExecReload=
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
RemainAfterExit=yes
ExecStartPre=
[Install]
WantedBy=multi-user.target
service文件配置可以参考systemd.service 中文手册
运行命令使服务开机自启
sudo systemctl enable autosshTest.service
启动服务
systemctl start autosshTest
翻墙
设置浏览器代理端口为你设置的端口(8888)就行,浏览器代理,软件代理方式有很多我就不说了
-R 1234:localhost:22: 将 B 主机的22端口和 VPS 的1234端口绑定 这样原来的ssh登陆会受影响吗?
@yakczh 不会,ssh为什么被断开,是因为你长时间没有和服务器进行交互,autossh就是每隔一段时间向服务器发送一个信号来保持连接有效。而不是断开后重新连接。原理上只有有个连接。应该不会对原来的有影响。