使用rsync远程SSH用户没有shell访问权限

7

我设置了Jenkins CI来将我的PHP应用程序部署到我们的QA Apache服务器,并遇到了问题。我成功地设置了本地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帐户没有有效的shell帐户,我是否应该创建一个具有shell访问权限并且属于"apache"组的远程帐户?这不是SSH密钥问题,因为ssh apache@site.example.com成功连接,但很快就将我踢出,因为apache没有shell。

3个回答

5

这可能是最容易实现的方法。您可能只想设置一个带有rsshscponly等受限shell的文件传输系统。您还可以设置chroot jail以便其无法访问整个文件系统。


你能提供命令吗?我安装了rssh并尝试了:rsync --partial --progress --rsh=rssh user@host:/path/remote_file local_file;仍然遇到同样的问题。也许我做错了什么。-谢谢 - codeObserver
为了跟上时代,rssh 已经过时了一段时间。最好使用 /usr/sbin/rush,它可以管理精确的权限规则。 - Daniel-KM
请参阅 https://stackoverflow.com/questions/63461837/auto-mounting-of-remote-folder-with-sshfs-without-giving-shell-access。 - Daniel-KM

0

我同意这可能是最容易的做法。我们做类似的事情,但使用scp。像这样:

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

0

我知道这是一个相当老的帖子,但如果有人在未来遇到这个页面...

我曾经遇到同样的问题,但当我修复了我的 .bashrc 文件时,问题得到了解决。 我删除了之前在我的 .bashrc 中存在的语句 "echo setting DISPLAY=$DISPLAY"。由于某种原因,rsync 与该语句存在问题。 因此,修复 .bashrc/.cshrc/.profile 错误对我有所帮助。


2
这可能是相同的错误消息,但是不同的问题。如果您有一个没有 shell 访问权限的 _SSH 用户_,则此方法将无法工作。 - yellowsir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接