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