持久的SSH连接
我使用此命令建立到远程服务器的SSH隧道。
ssh -D localproxy:9999 -C tcx0@111.222.333.444
我还使用expect
命令创建了一个shell脚本,自动处理整个过程并自动提供密码。
问题是,我必须手动运行此脚本以在PC启动时建立连接,并且当PC进入hibernate状态时,此连接中断,我再次运行此脚本。
有没有一种方法可以让它持久化而不管机器的状态如何?
有很多原因可以使连接失败,即使使用keepalive等等; 所以你应该考虑一种自动重启它的机制。
我会做的是:
-
设置SSH端点,以便您可以使用无密码模式的密钥登录: 如何设置无密码SSH登录?
-
准备一个在无限循环中进行连接的脚本—如果失败则重新启动; 尽管如此 , 使用“keepalive” ;
-
在启动时启动它: 如何让程序在启动时启动?
请注意,您可能需要使用su -c
(或sudo
)来运行ssh作为您的用户— /etc/rc.local
中的命令以root身份运行。 (谢谢@muru)。
您说您希望连接在断开连接时自动重新启动。 有一个包可以做到这一点: autossh
。 请参阅此处了解如何使用它。 该链接还有一个启动脚本,使其在启动时重新启动,尽管这是相对微不足道的; 这是重新启动连接失败很难。