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

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

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

我正在尝试创建一个允许我远程打开 ssh 隧道的工具。这些本地服务器中的每一个都运行一个 php 脚本,该脚本会 ping 我的主服务器,并返回一个 json。如果 json 中包含此服务器的名称,它将运行以下命令:

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

(使用 php 的 exec())

当我自己通过命令行运行此 PHP 时,隧道打开,我可以正常工作。当我使用 crontab 或 Supervisord 运行此 PHP 脚本时,出现此错误:

主机密钥验证失败

知道如何解决吗?

也许您对这个问题有更好的解决方案?

答案1

您可能正在 root 的 crontab 中运行该命令(您是否在超级用户模式下编辑了 crontab 文件 - 例如,您是否编辑了 crontab 前缀sudo?)。

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

相关内容