Возникла очень странная проблема. Я создал небольшой скрипт bash, который запускает команду на удаленном хосте через ssh (используя аутентификацию с открытым ключом).
Когда я запускаю этот скрипт вручную из командной строки, он работает нормально, но при помещении в /etc/cron.hourly он завершается с Permission denied, please try again.ошибкой.
- Я явно установил ключ в скрипте с помощью
ssh -i /root/.ssh/id_rsa user@remote "command"; - скрипт запускается от имени пользователя root (я добавил
echo `id` > /tmp/whoami.logдля двойной проверки); и - ключ ssh не защищен паролем ...
Система является сервером Ubuntu 12.04, у меня нет большого доступа на удаленной стороне для устранения неполадок, но, как я уже сказал, работает ssh вручную или тот же скрипт bash из командной строки.
Любая идея, почему это происходит или как это исправить ??
Обновить
Оказывается, я ошибся, и ключ ssh был защищен паролем (с помощью цепочки ключей, загружающей ssh-agent), поэтому он не работал из сценария, но не при запуске из сеанса bash. Добавление . ~/.keychain/$HOSTNAME-shв мой сценарий решило проблему (спасибо @grawity, который указал мне правильное направление и дал исчерпывающий ответ).
SSH_AUTH_SOCKэто связано (хотя я с удовольствием попробую что-нибудь). Я обращаюсь к файлу ключа напрямую, и файл ключа не защищен паролем. Как KRB5CCNAMEпоказал быстрый поиск, это как-то связано с Kerberos. Опять же - не вижу связи с этой проблемой, но, может быть, я что-то здесь
-vопцию к этой sshкоманде ...
ssh -iкоманду в обоих случаях ... Я попытаюсь сбросить эти переменные в скрипте и посмотреть. Хорошее предложение добавить -v- я тоже добавлю.
SSH_AUTH_SOCKиKRB5CCNAMEпеременных окружения.