某大学正在尝试使用 SFTP 客户端和 SSH 无密码登录从 Windows sftp 到 RHEL7 服务器。 用户帐户是chrooted在服务器上。
openssh版本6.6.1
安装在RHEL7服务器上。
在 SFTP 连接尝试失败后,我检查了/var/log/secure
服务器并发现了以下内容:
Sep 12 17:00:22 serverbox sshd[32652]: Accepted publickey for specialuser from 1.1.1.77 port 58776 ssh2: RSA FINGERPRINT
Sep 12 17:00:22 serverbox sshd[32652]: pam_unix(sshd:session): session opened for user specialuser by (uid=0)
Sep 12 17:00:22 serverbox sshd[32652]: sshd_selinux_copy_context: getcon failed with No such file or directory [postauth]
Sep 12 17:01:18 serverbox sshd[32652]: Received disconnect from 1.1.1.77: 11: disconnected by user [postauth]
Sep 12 17:01:18 serverbox sshd[32652]: pam_unix(sshd:session): session closed for user specialuser
尝试从 Putty SFTP 或 Filezilla(均配置为使用本地私钥)连接时,会出现相同的错误。
为了便于阅读,以下是 getcon 行:
sshd_selinux_copy_context: getcon failed with No such file or directory [postauth]
因此,公钥被接受,然后 Putty(和 Filezilla SFTP)在找不到它要查找的内容后就会丢失。
权限:
drwxr-xr-x. root root /home/specialuser
drwx------. specialuser sftponly /home/specialuser/.ssh
drw-------. specialuser sftponly /home/specialuser/.ssh/authorized_keys
服务器上的有效公钥:
[user@server]# ssh-keygen -l -f authorized_keys
2048 sha1:fi:ng:er:pr:in:tt rsa-key-20160913 (RSA)
对于 chroot 设置的其余部分,请检查这个答案我在另一个问题上发帖。
使用 chroot 帐户的 SFTP 在 Linux 客户端上运行良好:
我在本地 Linux 系统 (Ubuntu) 上创建了相同的用户帐户 ( specialuser
),将本地帐户复制id_rsa.pub
到服务器的/home/specialuser/.ssh/authorized_keys
,并且能够毫无问题地进行 sftp 。
SELinux 被排除
为了帮助排除故障,我暂时禁用了 SELinux,但在尝试从 Windows/Putty 中继续看到相同的错误“getcon failed...”。
启用密码验证时出现同样的问题
我还暂时启用了 PasswordAuthentication for specialuser
,但这仍然导致 Putty 退出,并且服务器文件中出现上述“getcon failed”错误/var/log/secure
。
记录该尝试的数据(详细):
Sep 14 10:34:32 serverbox sshd[41228]: Accepted password for specialuser from 1.1.1.77 port 61135 ssh2
Sep 14 10:34:32 serverbox sshd[41228]: pam_unix(sshd:session): session opened for user specialuser by (uid=0)
Sep 14 10:34:32 serverbox sshd[41228]: User child is on pid 41283
Sep 14 10:34:32 serverbox sshd[41228]: Changed root directory to "/home/specialuser" [postauth]
Sep 14 10:34:32 serverbox sshd[41228]: sshd_selinux_copy_context: getcon failed with No such file or directory [postauth]
Sep 14 10:34:32 serverbox sshd[41228]: Starting session: forced-command (config) 'internal-sftp' for specialuser from 1.1.1.77 port 61135 [postauth]
Sep 14 10:34:32 serverbox sshd[41228]: Connection closed by 1.1.1.77 [postauth]
Sep 14 10:34:32 serverbox sshd[41228]: Transferred: sent 1976, received 1728 bytes [postauth]
Sep 14 10:34:32 serverbox sshd[41228]: Closing connection to 1.1.1.77 port 61135 [postauth]
Sep 14 10:34:32 serverbox sshd[41228]: pam_unix(sshd:session): session closed for user specialuser
编辑
我在服务器上创建了一个单独的、非 chroot 的用户。我可以通过公钥/私钥 使用Putty
和Putty SFTP
到服务器。SSH/SFTP
问题是到达chroot 的主文件夹。
附录 1:记录数据LogLevel DEBUG3
https://justpaste.it/ycdi (输出超出了该问题允许的最大字符数)
sshd_配置
Subsystem sftp internal-sftp #added
Match group sftponly
PasswordAuthentication yes
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp