Назад | Перейти на главную страницу

rsync в сценарии оболочки с аутентификацией без пароля

Я внимательно следил за инструкцией там:

http://www.cyberciti.biz/faq/ssh-password-less-login-with-dsa-publickey-authentication/

И затем я написал следующий script.sh на моем локальном компьютере

echo "Sync"

rsync -avz --links /home/jansiatest/.jenkins/workspace/svn_to_demo/trunk/CPS/ jansia@ps27670.dreamhost.com:/home/tasklite/test

Но когда я запускаю сценарий, набирая ./script.sh, он снова спрашивает у меня пароль на сервере.

Я не знаю точно, что мне не хватает

Проверьте права доступа к каталогу .ssh на удаленном хосте, принимающем ключ. Ключ аутентификации не будет работать, если разрешения доступны для чтения любому другому пользователю. Каталог .ssh должен быть 700, а авторизованные ключи - 600. Или drwx ------ и -rw ------- соответственно. Я забываю об этом каждый раз, когда настраиваю новый хост.

Используйте параметр rsync -e, чтобы указать сценарий, который вы пишете, который запускает ssh с параметрами, которые вы контролируете. Используйте опцию ssh -o "пакетный режим да" чтобы заблокировать запросы пароля. Теперь, если ключи не получают доступа, появится сообщение об ошибке, и ssh выйдет с кодом состояния. Убедитесь, что ваш скрипт передает этот код состояния обратно в rsync. Если ваш скрипт что-то выводит, убедитесь, что он выводит только в STDERR. Если это все еще не удается, затем диагностируйте, почему ключ (ключи) принимаются / не принимаются сервером.

Это должно сработать, если вы неправильно развернули свой ключ ssh.

В Debian / Ubuntu вы можете развернуть его с помощью этой команды:

ssh-copy-id jansia@ps27670.dreamhost.com