我需要在防火墙后面的私有服务器和公共服务器之间建立一个永久的ssh隧道,这样我就可以通过公共服务器随时进入私有服务器。
当我在私有服务器上手动执行时,
ssh -R 6666:localhost:22 username@public_host
一切都很好。但是,当我将这一行放入crontab -e
以便隧道在重新启动时自动重新建立时,它就不能工作了。知道出了什么问题吗?
注意:服务器之间的公钥/私钥对已经设置并正常工作。
发布于 2016-07-18 10:20:24
使用autossh,这是为您所做的。它是为不需要手动启动或重新启动的持久连接设计的,这些连接是自我监控的,并且执行与普通ssh客户端相同的隧道工作。
发布于 2016-07-19 01:04:27
在会话上下文之外执行ssh
命令,因此可能缺少一些通常可用的内容。
想必你是在用钥匙进行身份验证。从cron的工作中有钥匙可用吗?
ssh
命令知道如何通过环境变量SSH_AUTH_SOCK
与关键代理联系,但是从crontab启动的ssh
没有这个变量。如果问题是密钥在某种程度上是密码保护的,那么在输入密码之前,您就无法建立隧道。你有两个解决方案:
https://unix.stackexchange.com/questions/296582
复制相似问题