Я перешел с Snow Leopard на Lion, и мои задания cron, использующие ssh, перестали работать. Похоже, что ssh-agent больше не работает, как ожидалось.
Вот упрощенная версия моего сценария с названием «из-за-cron», который отлично работал под Snow Leopard:
#!/bin/bash
whoami # just to verify I'm running as myself, not root
ssh-agent # just to see what it outputs
eval `ssh-agent`
ssh -vvv REMOTESERVER ls
При запуске из командной строки этот скрипт работает как положено.
При запуске из cron он не работает. Вывод ssh-agent выглядит нормально:
SSH_AUTH_SOCK=/tmp/ssh-QRxPUMRxbu/agent.17147; export SSH_AUTH_SOCK;
SSH_AGENT_PID=17148; export SSH_AGENT_PID;
echo Agent pid 17148;
Agent pid 17150
Но ssh -vvv
вывод показывает, что он не работает, когда закрытый ключ должен быть прочитан:
debug1: Server accepts key: pkalg ssh-dss blen 818
debug2: input_userauth_pk_ok: fp ...
debug3: sign_and_send_pubkey: DSA ...
debug1: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
debug1: read_passphrase: can't open /dev/tty: Device not configured
debug2: no passphrase given, try next key
Другими словами, он ожидает от меня ввода ключевой фразы ~/.ssh/id_dsa
, которая, конечно, не работает в заданиях cron.
Это все работало в Snow Leopard.
Обратите внимание , что у меня есть настройки связки ключей доступа , так что ssh
, ssh-agent
и ssh-add
может прочитать мою фразу для моего .ssh/id_dsa
файла - в результате я могу SSH из терминала приглашения без необходимости ввести свой пароль.
Нужно ли запускать эту проблему ssh-add
в какой-то момент процесса входа в систему? Запуск его из стандартного приглашения bash не помогает работе cron (хотя, как ни странно, он запрашивает мою фразу-пароль ... которая, я думаю, не является необходимой из-за конфигурации Keychain Access).
ПРИМЕЧАНИЕ 1. - перед тем, как перенаправить меня, я знаю, что здесь есть похожий вопрос (
Mac OS X Lion и sshpass ), но он касается именно программы, sshpass
которую я не использую (хотя я считаю, что на этот вопрос ответит и этот вопрос) ).
ПРИМЕЧАНИЕ 2. - Я понимаю, что SSH-ключи без пароля решают мою проблему; однако я бы предпочел не идти по этому пути.