当你学会如何建立一个反向 SSH 隧道,如何保证这条隧道持续运行不断开呢?毕竟,如果隧道不是一直有效,你就不能可靠的登录到你的内网服务器。
对于永久隧道,我打算使用一个叫 autossh 的工具。正如名字暗示的,这个程序可以让你的 SSH 会话无论因为什么原因中断都会自动重连。因此对于保持一个反向 SSH 隧道非常有用
第一步,我们要设置从家庭服务器到中继服务器的无密码 SSH 登录。这样的话,autossh 可以不需要用户干预就能重启一个损坏的反向 SSH 隧道
下一步,在建立隧道的家庭服务器上安装 autossh
yum -y install autossh
在内网服务器上,用下面的参数运行 autossh 来创建一个连接到中继服务器的永久 SSH 隧道
autossh -M 2048 -fN -o "PubkeyAuthentication=yes" -o "StrictHostKeyChecking=false" -o "PasswordAuthentication=no" -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R 1.1.1.1:10022:localhost:22 ruok@1.1.1.1 -p 22
-M 2048 选项指定中继服务器上的监视端口,用于交换监视 SSH 会话的测试数据。中继服务器上的其它程序不能使用这个端口。
-fN 选项传递给 ssh 命令,让 SSH 隧道在后台运行。
-o XXXX” 选项让 ssh:
使用密钥验证,而不是密码验证。
自动接受(未知)SSH 主机密钥。
每 60 秒交换 keep-alive 消息。
没有收到任何响应时最多发送 3 条 keep-alive 消息
其余 SSH 隧道相关的选项和之前介绍的一样。
如果你想系统启动时自动运行 SSH 隧道,你可以将上面的 autossh 命令添加到 /etc/rc.local