我知道许多销售networking/服务器设备的供应商,他们都有一个支持button,一旦按下,就可以将SSH支持隧道设置回供应商主服务器,以便技术支持人员可以直接连接到设备并进行故障排除。
我想设置,但不需要按支持button。 我想在远程位置部署笔记本电脑,然后定期自动回拨给主设备,如果设备重新启动,或者远程networking断开连接一段时间,则重新build立连接。 (两端都是Linux的盒子)
基本上我想在客户环境中部署临时的Zenoss / Cacti监控服务器,但是我不想在他们的防火墙上打孔,或者处理他们的站点特定的VPN设置。
有谁知道任何脚本或ssh守护进程帮助设置此function?
尝试autossh 。 它正在做你到底在做什么,假设你设置公钥authentication(否则你必须每次手动input密码)。
从autossh网页引用:
autossh是一个程序来启动一个ssh的副本并监视它,如果有必要的话重新启动它,如果它死或停止通过stream量。
如果你想自动启动它,你可以使用crontab 。 运行crontab -e并添加
@reboot /usr/local/bin/start_tunnel.sh
要不就
@reboot autossh username@host <other ssh options here>
警告:如果第一次连接失败,networking不启动, autossh不会启动/parsing不起作用。 解决方法:把这样的东西放到start_tunnel.sh :
while true; do autossh username@host -M 12313 -R... sleep 15 done
这样,如果autossh由于某种原因退出,稍后会重新启动。
此外, autossh默认连接轮询并不经常发生,您可以使用AUTOSSH_POLL和AUTOSSH_FIRST_POLLvariables来控制它。
但是我不想在他们的防火墙上打洞
所以归结到你正在试图绕过现有的安全机制。 不完全是非常道德的。 为什么不告诉他们如何configuration他们的防火墙。
我以前使用ppp通过SSL隧道(使用stunnel,但是ssh也是可行的,大多数其他vpns也可以)将远程设备映射到networking中。 我将它设置为sysV initscript运行,但从暴发户运行或DJB的守护进程可能是一个更明智的方法。
你当然有权做这样的事情? 我工作的地方是公然违反安全政策的。
无论如何,如果你只有less数几个盒子,你可以做任何外部应用程序。 只需将公钥authentication设置为“支持”服务器,并在笔记本电脑上添加如下内容到crontab:
@reboot ssh -R 65000:localhost:22 support.box.on.example.com
(显然使用不同的机器不同的端口,下一台笔记本电脑可以使用端口65001等)
现在当你在端口65000 SSH本地主机,你连接到笔记本电脑的端口22。