我正在 Red Hat 6.9 上构建一个 SFTP 服务器(需要说明的是,我使用的是 OpenSSH 的 FTP 扩展)。我遵循以下指南:
https://www.howtoforge.com/tutorial/how-to-setup-an-sftp-server-on-centos/
我完全按照描述的方式配置所有内容。我使用的客户端操作系统是 Windows 10。我已经使用 Putty 的 SFTP 客户端和 WinSCP 进行了测试(我认为我的问题与客户端无关)。当我尝试连接时,系统会提示我输入用户名,然后是密码。输入我的密码后,会话立即关闭。/var/log/secure 显示以下相关消息:
Aug 2 14:30:28 SFTP_Server sshd[4087]: pam_unix(sshd:session): session opened for user scott.ftp by (uid=0)
Aug 2 14:30:28 SFTP_Server sshd[4089]: fatal: bad ownership or modes for chroot directory "/sftp/scott.ftp/data"
Aug 2 14:30:28 SFTP_Server sshd[4087]: pam_unix(sshd:session): session closed for user scott.ftp
要显示与教程匹配的目录权限:
[root@SFTP_Server data]# ls -alh / | grep sftp
drwxr-xr-x 4 root root 4.0K Aug 2 12:37 sftp
[root@SFTP_Server data]# ls -alh /sftp
total 16K
drwxr-xr-x 4 root root 4.0K Aug 2 12:37 .
dr-xr-xr-x. 25 root root 4.0K Aug 2 12:35 ..
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 scott.ftp
[root@SFTP_Server data]# ls -alh /sftp/scott.ftp/
total 12K
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 .
drwxr-xr-x 4 root root 4.0K Aug 2 12:37 ..
drwxrwx--- 2 scott.ftp sftpusers 4.0K Aug 2 12:38 data
[root@SFTP_Server data]# ls -alh /sftp/scott.ftp/data/
total 8.0K
drwxrwx--- 2 scott.ftp sftpusers 4.0K Aug 2 12:38 .
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 ..
我不确定是什么让我尝试了这个想法,但为了排除故障,我更改了“。”的权限。目录:
[root@SFTP_Server data]# pwd
/sftp/scott.ftp/data
[root@SFTP_Server data]# chown root:root .
[root@SFTP_Server data]# ls -alh
total 8.0K
drwxrwx--- 2 root root 4.0K Aug 2 12:38 .
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 ..
现在我尝试再次连接,我可以成功连接。但我无法列出目录或制作目录或任何其他操作。我在这里得到的错误是“权限被拒绝”。虽然仍通过 SFTP 连接,但在备用 SSH 连接中,我将权限更改回:
[root@SFTP_Server data]# chown scott.ftp:sftpusers .
[root@SFTP_Server data]# ls -alh
total 8.0K
drwxrwx--- 2 scott.ftp sftpusers 4.0K Aug 2 12:38 .
drwxr-xr-x 3 root root 4.0K Aug 2 12:38 ..
现在我可以在 SFTP 会话中创建目录和其他操作。我退出 SFTP 会话并尝试连接,但如上所述登录失败。
任何帮助是极大的赞赏。
从技术上讲,这不可能创建一个
chroot
可由连接用户写入的 .一般建议是
data/
,该目录可由该用户写入。