我一直在尝试配置我的 CentOS 6.5 最低 64 位计算机,以允许 SFTP 用户连接并被限制在特定文件夹中。我可以使用 unix 命令“sftp user@localhost”进行 sftp 并在受限目录中移动,但我不能使用 LS 或任何其他类似的命令。然而,真正的问题是我根本无法使用 FileZilla 进行连接。我只是收到此错误:
Status: Retrieving directory listing...
Command: pwd
Response: Current directory is: "/"
Command: ls
Status: Listing directory /
Error: Unable to open .: permission denied
Error: Connection timed out after 20 seconds of inactivity
我希望在 Unix 中使用 SFTP 命令时能够使用 LS,但最重要的是,我需要它与 FileZilla 一起工作。
以下是当前设置的描述:
/etc/ssh/sshd_config
Subsystem sftp internal-sftp
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/sftp/%u
ForceCommand internal-sftp
grep 用户 /etc/passwd
user:x:500:500::/var/sftp/user/incoming:/sbin/nologin
群组用户
user : user sftp_users
全部 / | grep 变量
drwxr-xr-x root root var
复制代码grep sftp
drwxr-xr-x root root sftp
ll /var/sftp | grep 用户
drwxr-xr-x root root user
ll /var/sftp/用户
drwxrwxr-x user sftp_users incoming
drwxrwxr-x user sftp_users outgoing
我读到的所有内容都说应该这样设置,所以请告诉我我遗漏了什么。我似乎无法让它正常工作。
谢谢你的时间。
[编辑:]
我使用这个命令来修改我的用户的主目录;
usermod -d /incoming
这样他就会进入/incoming,而不是像以前那样进入目录的完整路径。
grep 用户 /etc/passwd
user:x:500:500::/incoming:/sbin/nologin
ls -lrtd /var/sftp/用户/传入
drwxrwxr-x user sftp_users /var/sftp/user/incoming
sshd_配置
#Subsystem sftp /usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp -f AUTH -l INFO
Match Group sftp_users
ChrootDirectory /var/sftp/%u
ForceCommand internal-sftp
但是,我在 UNIX 中使用 SFTP 命令和在 Windows 上使用 FileZilla 时仍然会遇到相同的错误。
我已将调试级别日志记录添加到 sshd 配置中,但 /var/log/messages 文件中的消息并未填充给除 root 用户之外的任何人。因此该路由目前不起作用。此外,/var/log/secure 文件未显示任何与 SFTP 身份验证和会话启动相关的错误。
SFTP 输出
[root@...]# sftp user@localhost
Connecting to localhost...
user@localhost's password:
sftp> ls
Couldn't get handle: Permission denied
sftp> cd ..
sftp> cd incoming
Couldn't canonicalise: Permission denied
sftp> quit
[root@...]#