Щойно модернізований від Snow Leopard до Lion, і мої роботи з cron, які використовують ssh, перестали працювати. Схоже, ssh-агент більше не працює, як очікувалося.
Ось розгорнута версія мого сценарію, що дзвонив із крона, який чудово працював під 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-агента виглядає нормально:
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 (хоча, як це не дивно, це підказує мені для моєї парольної фрази ... що, на мою думку, не потрібне b / c конфігурації Keychain Access).
ПРИМІТКА 1 - перед тим, як перенаправити мене - я знаю, що тут є подібне питання (
Mac OS X Lion та sshpass ), але мова йде саме про програму, sshpass
яку я не використовую (хоча я вважаю, що на це питання відповів би і цей. ).
ПРИМІТКА 2 - Я розумію, що SSH-ключі без паролів вирішили б мою проблему; однак я вважаю за краще не йти цим маршрутом.