持久的SSH连接

我使用此命令建立到远程服务器的SSH隧道。

ssh -D localproxy:9999 -C tcx0@111.222.333.444 

我还使用expect命令创建了一个shell脚本,自动处理整个过程并自动提供密码。

问题是,我必须手动运行此脚本以在PC启动时建立连接,并且当PC进入hibernate状态时,此连接中断,我再次运行此脚本。

有没有一种方法可以让它持久化而不管机器的状态如何?

有很多原因可以使连接失败,即使使用keepalive等等; 所以你应该考虑一种自动重启它的机制。

我会做的是:

  1. 设置SSH端点,以便您可以使用无密码模式的密钥登录: 如何设置无密码SSH登录?

  2. 准备一个在无限循环中进行连接的脚本—如果失败则重新启动; 尽管如此 , 使用“keepalive” ;

  3. 在启动时启动它: 如何让程序在启动时启动?

请注意,您可能需要使用su -c (或sudo )来运行ssh作为您的用户— /etc/rc.local中的命令以root身份运行。 (谢谢@muru)。

您说您希望连接在断开连接时自动重新启动。 有一个包可以做到这一点: autossh 。 请参阅此处了解如何使用它。 该链接还有一个启动脚本,使其在启动时重新启动,尽管这是相对微不足道的; 这是重新启动连接失败很难。