如何建立持久的 ssh 隧道?

Bla*_*ing 5 ssh automation macos

我有一台 Mac 笔记本电脑,希望有一个持久的 ssh 隧道,这样我就可以随时从本地网络外部登录。我正在寻找一些可以在最初无法访问服务器时工作的东西(例如,如果我启动时没有互联网连接),并且会在可能的情况下自动启动隧道。

我尝试@reboot autossh在 crontab 中添加一行,但我发现会话开始时autossh经常会断开连接,autossh如果第一次尝试失败就会退出。我当前的解决方法是一个小脚本和一个 cronjob:

# crontab
/home/blackl/bin/script &!

# script
#!/bin/sh
while true; do ssh -Ngn -R $some_port:localhost:22 $server; sleep 30; done;
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点,或者我现在只能对此感到满意?

小智 3

抱歉,这是一个很晚的回复,您可能已经遇到过这个解决方案,但以下是如何使用 OS X 的 launchctl 机制来完成它。

我不认为他说得完全正确;您可以使用“KeepAlive”键(值为“true”)而不是已弃用的“OnDemand/false”键/值对。另外,我不知道为什么他要转发到远程主机(1666)上与 22 相同的端口。不过 - 你明白了。我的网络服务器已经启动并正常运行。比无限循环优雅得多。

哦,你可以使用奇妙的LaunchControl来设置、修改和监视它,而不是他提到的Lingon 。如果您不熟悉 launchctl,我强烈建议您阅读程序或网站中的入门手册,以了解发生了什么。抱歉 - 我本来想链接到底漆,但我还没有建立足够的代表:/