CentOS 6.5 ssh ChrootDirectory 不起作用

CentOS 6.5 ssh ChrootDirectory 不起作用

我一直在尝试配置我的 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@...]#

相关内容