我使用upstart来使用类似于利用Upstart管理AutoSSH反向隧道的auto来保持反向ssh隧道的运行。
这是很好的工作,除非手动电源关闭后,我不能再连接到机器通过“中央服务器”使用隧道。我收到"ssh_exchange_identification:由远程主机关闭的连接“。autossh进程正在客户端上运行。我可以在重新建立关系网后再联系起来。
我正试图弄清楚为什么在人工关闭之后,这种情况会持续失败。我是否可能需要在启动时进行一些清理,以便隧道能够在这种情况下工作,或者我是否可以采取其他调试/故障排除步骤来确定问题?
机器A是使用autossh的客户端机器。这台机器位于防火墙后面,在upstart中使用以下命令创建ssh隧道:
/usr/bin/autossh -fN -i /keyfile -o StrictHostKeyChecking=no -R 20098:localhost:22 user@centralserver
机器B我们称之为“中央服务器”,它位于云端,是主机。这台机器是上面命令中的“中央服务器”。
当机器A被硬关闭并重新打开时,我无法通过SSH‘in从我的机器(C)连接到云中的机器B,然后使用以下命令到达机器A:
ssh -p 2098 user@localhost
同样,在重新启动客户端(A)后,这也可以正常工作。只有在一次硬性的权力下降之后,问题才会发生。在关闭和备份之后,有一些自动进程在客户机(A)上运行,但它们似乎没有完成它们的工作。
发布于 2011-08-22 04:53:24
问题是,该系统并没有优雅地关闭。我安装了尖峰,它在/etc/acpi中添加了一个powerbtn.sh脚本,该脚本在按下电源按钮时调用关机。
发布于 2012-09-29 11:59:57
诚然,当运行autossh的客户端没有正常关闭时,服务器上仍然存在ssh实例。若要解决此问题,请尝试杀死这些实例。我用的是killall -u
,它很管用。之后,autossh成功地重新连接到服务器,我可以通过ssh连接到客户端。在运行autossh的客户机上,我还设置了参数AUTOSSH_GATETIME=0
。
发布于 2012-01-17 17:46:48
我发现这个教程很有用,而且很直接:
http://jiang925.com/content/tunnel-through-firewall-using-reverse-ssh-and-vpn-dd-wrt
他们将autossh命令添加到/etc/rc.local中,以便在启动时执行。
https://serverfault.com/questions/303046
复制