Маючи дуже дивну проблему. Я створив невеликий скрипт 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
середовища.