我正在尝试设置 sftp 服务器,但客户端出现错误,Connection closed by server with exitcode 1
/var/log/auth.log(如下)没有太大帮助,我如何找出错误是什么?
我正在运行 Ubuntu 10.04.1 LTS
sshd[27236]: Accepted password for theuser from (my ip) port 13547 ssh2
sshd[27236]: pam_unix(sshd:session): session opened for user theuser by (uid=0)
sshd[27300]: subsystem request for sftp
sshd[27236]: pam_unix(sshd:session): session closed for user theuser
更新:我已经对此进行了一段时间的探索,另一台服务器上的 sftp 命令给出了更有用的错误。
Request for subsystem 'sftp' failed on channel 0
Couldn't read packet: Connection reset by peer
我在网上找到的所有内容都表明这是 sftp-server 的问题,但是当我从 sshd 配置中删除 chroot 时,我可以访问系统。我认为这意味着 sftp-server 可以访问并且设置正确。
答案1
sftp-server 是外部二进制文件。它可能不在您的 chroot 环境中。
如果您修改 sshd_config 以使用内部子系统(如果可用),它应该开始与 chroot 一起工作。
答案2
我遇到了完全相同的问题。正如 MikeyB 所建议的那样,您可能需要将子系统更改为 internal-sftp。我在 sshd_config 中更改了以下内容:
Subsystem sftp /usr/lib/openssh/sftp-server
到
Subsystem sftp internal-sftp
您还必须将 Match 节中的 ForceCommand 值更改为如下内容:
Match User john-doe
ChrootDirectory %h
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
至少这对我有用,希望这对某些人有帮助。
答案3
我自己也刚刚经历过这个。
用户只需拥有 SSH 权限。