Ubuntu
使用 SSH 反向隧道管理防火牆後的多台伺服器
我在不同的位置有 10 台 Ubuntu 伺服器,每個伺服器都位於防火牆後面(local_server_1 到 10)。所有這些伺服器都被授權使用 ssh 密鑰通過 SSH 連接到我的公共伺服器(我們稱之為 master)(換句話說,它們的 ssh 密鑰在 master 的 authorized_keys 文件中)。
我正在嘗試創建一個允許我遠端打開 ssh 隧道的工具。這些本地伺服器中的每一個都執行一個 ping 我的主伺服器的 php 腳本,它返回一個 json。如果 json 中有此伺服器的名稱,它將執行以下命令:
ssh -t -t -R 13337:localhost:22 root@<master_id>
(使用 php 的 exec())
當我自己通過命令行執行這個 PHP 時,隧道會打開,我可以正常工作。當我使用 crontab 或 supervisord 執行這個 PHP 腳本時,我得到這個錯誤:
主機密鑰驗證失敗
知道如何解決嗎?
也許您對這個問題有更好的解決方案?
您可能正在 root 的 crontab 中執行該命令(您是否在超級使用者模式下編輯了 crontab 文件 - 即您是否編輯了 crontab 前綴
sudo
?)。如果是這種情況,那麼主機驗證密鑰應該位於您的超級使用者的 /root/.ssh/ 目錄中,而不是您的目錄中。