Использование rsync для удаленного пользователя SSH без доступа к оболочке - PullRequest
4 голосов
/ 09 июня 2011

Я настроил Jenkins CI для развертывания моего приложения PHP на нашем сервере QA Apache и столкнулся с проблемой.Я успешно настроил аутентификацию pubkey от локальной учетной записи jenkins до удаленной учетной записи apache, но когда я использую rsync, я получаю следующую ошибку:

[jenkins@build ~]# rsync -avz -e ssh test.txt apache@site.example.com:/path/to/site
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at compat.c(64) [sender=2.6.8]
[jenkins@build ~]# 

Одна потенциальная проблема заключается в том, что удаленная apache У учетной записи нет действительной учетной записи оболочки. Следует ли создавать удаленную учетную запись с доступом к оболочке и частью группы "apache"?Это не проблема ключа SSH, так как ssh apache@site.example.com успешно соединяется, но быстро выводит меня из строя, поскольку apache не имеет оболочки.

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Это, вероятно, было бы проще всего сделать.Возможно, вы захотите установить его только с ограниченной оболочкой, такой как rssh или scponly , чтобы разрешить только передачу файлов.Вы также можете настроить chroot-тюрьму, чтобы она не видела всю вашу файловую систему.

0 голосов
/ 01 мая 2013

Я знаю, что это довольно старая тема, но если кто-нибудь попадет на эту страницу в будущем ...

У меня была такая же проблема, но я исправил ее, когда исправил свой .bashrc. Я удалил утверждение "echo setting DISPLAY = $ DISPLAY", которое было там ранее в моем .bashrc. Rsync имеет проблемы с этим утверждением по какой-то причине. Итак, исправление ошибок .bashrc / .cshrc / .profile помогло мне.

0 голосов
/ 09 июня 2011

Я согласен, что это, вероятно, было бы самым легким делом. Мы делаем нечто подобное, но вместо этого используем scp. Что-то вроде:

scp /path/to/test.txt apache@site.example.com:/path/to/site
...