Управление несколькими серверами за брандмауэром с помощью обратного туннеля SSH

У меня есть 10 серверов Ubuntu в разных местах, за брандмауэром каждый (local_server_1 до 10). Все эти серверы авторизованы для SSH на моем общедоступном сервере (давайте назовем его master), используя ключи ssh (другими словами, их ключи ssh находятся в файле author_keys мастера).

Я пытаюсь создать инструмент, который позволяет мне открывать туннель SSH удаленно. Каждый из этих локальных серверов запускает скрипт php, который проверяет связь с моим главным сервером, и возвращает json. Если у json есть имя этого сервера, он запускает эту команду:

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

(с помощью php exec())

Когда я сам запускаю этот PHP через командную строку, туннель открывается, и я могу работать правильно. Когда я запускаю этот скрипт PHP с помощью crontab ИЛИ supervisord, я получаю эту ошибку:

Ошибка проверки ключа хоста

Любая идея, как я могу решить это?

Возможно, у вас есть лучшее решение проблемы?

1 ответ

Решение

Вы, вероятно, запускаете команду в crontab пользователя root (редактировали ли вы файл crontab в режиме суперпользователя - то есть редактировали ли вы предшествующий файл crontab?) sudo?).

В этом случае ключи проверки хоста должны находиться в каталоге вашего суперпользователя /root/.ssh/, а не в вашем.

Другие вопросы по тегам