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

Hum*_*Sky 6 apache ssh rsync apache2 jenkins

我设置了 Jenkins CI 以将我的 PHP 应用程序部署到我们的 QA Apache 服务器,但我遇到了一个问题。我成功设置了从本地jenkins账户到远程apache账户的pubkey认证,但是当我使用的时候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 ~]# 
Run Code Online (Sandbox Code Playgroud)

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

Abe*_*ker 5

这可能是最容易做的事情。您可能只想使用rsshscponly等有限的 shell 来设置它,以仅允许文件传输。您可能还想设置一个 chroot 监狱,以便它无法看到您的整个文件系统。