持久 SSH 连接

持久 SSH 连接

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

ssh -D localproxy:9999 -C [email protected]

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

问题是,我必须手动运行此脚本以在 PC 启动时建立连接,而且,当 PC 进入睡眠状态时,此连接会断开,然后我再次运行此脚本。

有什么方法可以让它持久,而不管机器的状态如何?

答案1

即使使用 keepalive 和类似的东西,也有很多原因会导致连接失败;因此您应该考虑一种自动重新启动它的机制。

我会做的是:

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

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

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

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

答案2

你说你想让连接在断开时自动重新启动。有一个包可以做到这一点:autossh。参见,例如这里如何使用它。该链接还有一个启动脚本,用于在启动时重新启动,尽管这相对简单;连接失败时重新启动很难。

相关内容