Управление несколькими серверами за брандмауэром с помощью обратного туннеля 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/, а не в вашем.