2011-06-09 66 views
4

我设置了Jenkins CI来将我的PHP应用程序部署到我们的QA Apache服务器,并且遇到了issuse。我成功建立了PUBKEY认证从本地詹金斯帐户远程Apache账户,但是当我使用rsync,我得到以下错误:将rsync用于无shell访问的远程SSH用户

[[email protected] ~]# rsync -avz -e ssh test.txt [email protected]:/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] 
[[email protected] ~]# 

一个潜在的问题是,远程apache帐户没有一个有效的shell帐户,我应该创建一个具有shell访问权限和"apache"组的一部分的远程帐户吗?这不是一个SSH密钥问题,因为ssh [email protected]连接成功,但由于apache没有shell,所以很快就把我踢出去了。

回答

2

这可能是最容易做的事情。您可能希望仅使用像rsshscponly这样的有限shell进行设置,以仅允许文件传输。你也可能想要建立一个chroot监狱,这样它就不会看到你的整个文件系统。

+0

你能提供命令吗?我安装了rssh并尝试:rsync --partial --progress --rsh = rssh user @ host:/ path/remote_file local_file;仍然遇到同样的问题。可能是我错了。 - 感谢 – codeObserver 2012-03-19 22:03:00

0

我同意这可能是最容易做的事情。我们做类似的事情,但改为使用scp。喜欢的东西:

scp /path/to/test.txt [email protected]:/path/to/site 
0

我知道这是很老的线程,但如果有人遇到这个页面在未来...

我有同样的问题,但得到了固定,当我固定我的.bashrc 。 我删除了之前在我的.bashrc中的语句“echo setting DISPLAY = $ DISPLAY”。出于某种原因,rsync与该语句有关。 因此,修复.bashrc/.cshrc/.profile错误对我有帮助。

+1

这可能是相同的errror messge,但不同的isse。如果你有一个没有shell访问的_SSH用户,这将不起作用 – yellowsir 2015-03-24 12:41:39