我使用此命令建立到远程服务器的 SSH 隧道。
ssh -D localproxy:9999 -C [email protected]
我还编写了一个 shell 脚本,使用expect
命令自动处理整个过程并自动提供密码。
问题是,我必须手动运行此脚本以在 PC 启动时建立连接,而且,当 PC 进入睡眠状态时,此连接会断开,然后我再次运行此脚本。
有什么方法可以让它持久,而不管机器的状态如何?
答案1
即使使用 keepalive 和类似的东西,也有很多原因会导致连接失败;因此您应该考虑一种自动重新启动它的机制。
我会做的是:
设置您的 SSH 端点,以便您可以在无密码模式下使用密钥登录:如何设置无密码 SSH 登录?
准备一个脚本,让连接无限循环——如果失败则重新启动;尽管如此,还是使用“keepalive”;
在启动时启动它:如何让程序在开机时启动?
请注意,您可能需要使用su -c
(或sudo
)以您的用户身份运行 ssh --- 中的命令/etc/rc.local
以 root 身份运行。(感谢@muru)。
答案2
你说你想让连接在断开时自动重新启动。有一个包可以做到这一点:autossh
。参见,例如这里如何使用它。该链接还有一个启动脚本,用于在启动时重新启动,尽管这相对简单;连接失败时重新启动很难。