У меня есть 10 серверов Ubuntu в разных местах, каждый за брандмауэром (local_server_1 до 10). Все эти серверы авторизованы для SSH на моем общедоступном сервере (давайте назовем его главным) с помощью ключей ssh (другими словами, их ключи ssh находятся в файле authorized_keys мастера).
Я пытаюсь создать инструмент, который позволяет мне удаленно открывать туннель ssh. Каждый из этих локальных серверов запускает скрипт php, который проверяет мой главный сервер и возвращает json. Если в json есть имя этого сервера, он запускает эту команду:
ssh -t -t -R 13337:localhost:22 root@<master_id>
(с помощью php exec ())
Когда я сам запускаю этот PHP через командную строку, туннель открывается, и я могу нормально работать. Когда я запускаю этот PHP-скрипт с помощью crontab OR supervisord, я получаю эту ошибку:
Ошибка проверки ключа хоста
Есть идеи, как я могу это решить?
Возможно, у вас есть лучшее решение проблемы?
Вероятно, вы запускаете команду в корневом каталоге crontab (редактировали ли вы файл crontab в режиме суперпользователя, т. Е. Редактировали ли вы файл crontab, добавляющий sudo
?).
В этом случае ключи проверки хоста должны находиться в каталоге /root/.ssh/ вашего суперпользователя, а не в вашем.