У меня есть рабочая настройка rsync между Mac OS X Server и Linux Centos при запуске вручную в терминале.
Я ввожу команду rsync, она запрашивает пароль, я ввожу ее, и она идет, запускается и завершается.
Теперь я знаю, что это работает, и решил полностью автоматизировать его с помощью cron.
Прежде всего, я создаю авторизованный ключ SSH, выполнив эту команду на сервере Mac:
ssh-keygen -t dsa -b 1024 -f /Users/admin/Documents/Backup/rsync-key
Ввод пароля и его подтверждение. Затем я копирую файл rsync-key.pub на сервер Linux, помещаю его в папку пользователя rsync .ssh и переименовываю в authorized_keys:
/home/philosophy/.ssh/authorized_keys
Затем я убеждаюсь, что файл authorized_keys - это chmod 600 в папке chmod 700.
Затем я настраиваю сценарий оболочки для запуска cron:
#!/bin/bash
RSYNC=/usr/bin/rsync
SSH=/usr/bin/ssh
KEY=/Users/admin/Documents/Backup/rsync-key
RUSER=philosophy
RHOST=example.com
RPATH=data/
LPATH="/Volumes/G Technology G Speed eS/Backup"
$RSYNC -avz --delete --progress -e "$SSH -i $KEY" "$LPATH" $RUSER@$RHOST:$RPATH
Затем дайте файлу оболочки права на выполнение, а затем добавьте следующее в crontab с помощью crontab -e:
29 12 * * * /Users/admin/Documents/Backup/backup.sh
Я проверяю свой файл журнала crontab после запуска указанной выше команды, и я получаю это в журнале и ничего больше:
Feb 21 12:29:00 fileserver /usr/sbin/cron[80598]: (admin) CMD (/Users/admin/Documents/Backup/backup.sh)
Итак, я считаю, что все прошло как надо. Но когда я проверяю удаленный сервер, никакие файлы не копируются.
Если я запускаю файл backup.sh в терминале как обычно, он все равно запрашивает пароль, но на этот раз через систему Mac Keychain, а не вводит текст в окне консоли. С помощью Mac Key Chain я могу настроить его так, чтобы он сохранял пароль, чтобы он не запрашивал его снова, но я уверен, что при запуске с cron этот пароль не подбирается.
Здесь я предполагаю, что rsync в cron не работает, потому что для подключения ему нужен пароль, но я думал, что вся идея создания ключей SSH заключалась в том, чтобы предотвратить использование пароля. Я что-то пропустил или сделал что-то не так?
Спасибо
Скотт
Вы можете создавать ключи без пароля, когда он запрашивает его, просто нажмите Enter, и вы получите ключ без установленного пароля. Используйте этот ключ только для доверенных внутренних подключений.
Тогда использование этого ключа с cron должно работать.