使用SSH反向隧道pipe理防火墙后面的多个服务器

我有10个Ubuntu服务器在不同的位置,每个防火墙后面(local_server_1到10)。 所有这些服务器都有权使用ssh密钥(也就是说,它们的ssh密钥位于master的authorized_keys文件中)通过SSH连接到我的公共服务器(可以称之为主服务器)。

我正在尝试创build一个允许我远程打开SSH隧道的工具。 每个本地服务器都运行一个php脚本来ping我的主服务器,并返回一个json。 如果json中有这个服务器的名字,它会运行这个命令:

ssh -t -t -R 13337:localhost:22 root@<master_id> 

(用php的exec())

当我通过命令行自己运行这个PHP时,隧道打开,我可以正常工作。 当我运行这个PHP脚本使用crontab或supervisord,我得到这个错误:

主机密钥validation失败

任何想法如何解决它?

也许你对这个问题有更好的解决scheme?

你可能在root的crontab中运行这个命令(你是否在超级用户模式下编辑了crontab文件 – 也就是说你是否编辑了crontab predo sudo ?)。

如果是这种情况,那么主机validation密钥应该位于您的超级用户的/root/.ssh/目录中,而不是您的。