У меня очень простая задача cron, написанная в сценарии оболочки, которая передает файл с другого сервера на локальный. например,
#!/bin/bash
scp $REMOTE:/$FILE ./
Конечно, серверу нужен закрытый ключ для входа в систему, в котором у меня есть файл конфигурации, в котором сохраняются HostName, IdentityFile (~ / .ssh / id_rsa, мод с 600).
Однако при запуске cron возникает проблема с отказом в разрешении ....
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/xxx>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=xxxx>
Message-Id: <20120118235702.33A7B16C03B5@xxx-xxxx-deskbox>
Date: Wed, 18 Jan 2012 18:57:02 -0500 (EST)
Permission denied (publickey).
Я везде проверял, там говорится, что crontab будет работать как среда владельца / пользователя.
У кого-нибудь есть решение для этого? Спасибо!
Задача решена. На моем ключе id_rsa была кодовая фраза. Следовательно, запуск вручную не потребует этого, поскольку фраза присутствует в сеансе; в то время как crontab нужна кодовая фраза. Удалить кодовую фразу
ssh-keygen -p [-P old_passphrase]
и введите пустое значение для новой кодовой фразы; или проверить эта страница
Надеюсь, мой ответ поможет некоторым программистам несколько часов отладки ..