通过 SFTP 和 SSH 与用户建立连接

通过 SFTP 和 SSH 与用户建立连接

我想允许非 root 用户使用 Filezilla 登录 SFTP(用于修改文件),在 /home/test 文件夹中,并通过 SSH 连接(用于其他操作)。

我在 Debian 10.7 上工作。root 是文件夹的所有者,权限为 755。我正在使用 sftp 组中的用户进行测试

我的 sshd_config:

Subsystem       sftp    internal-sftp

Match Group sftp
ChrootDirectory /home/test/
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

因此我可以使用 Filezilla 将他连接到 /home/test,但无法使用 SSh 将他连接。测试结果如下:

This service allows sftp connections only.

可以同时运行两者吗?我不太清楚要测试什么。

答案1

Subsystem       sftp    internal-sftp

Match Group sftp
ChrootDirectory /home/test/
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no

此配置通常用于限制用户仅有的SFTP 访问。您表示想要允许 SFTP 和普通 SSH 会话(命令行访问,通常称为“shell”会话)。限制用户只能使用 SFTP 的配置对您来说并不正确。

您当前面临的问题是该ForceCommand internal-sftp行。这会强制服务器为任何客户端会话启动 SFTP。如果您想允许除 SFTP 之外的会话(例如 shell 会话),则不应存在此行。

除此之外,请考虑其他几行:

Subsystem       sftp    internal-sftp

需要添加“subsystem sftp”行以允许 SFTP。此行可以。保留它。

ChrootDirectory /home/test/

此行将用户限制在/home/test目录及其子目录中。对于 SFTP 会话来说,这没问题。但要支持 shell 会话,目录/home/test需要是完整的“chroot”包含设备文件、共享库和一组允许用户运行的程序的目录。这将需要付出巨大的努力来设置和维护,并且将命令行用户限制在这样的 chroot 环境中并不常见。您很可能不想要这个,应该将其删除。

Match Group sftp
AllowTCPForwarding no
X11Forwarding no

如果您需要,这些行是可以的。该Match Group行限制以下行影响“sftp”组中的用户。该AllowTCPForwarding行阻止这些用户转发 TCP 端口。该X11Forwarding行阻止这些用户转发 X 会话。如果您有理由限制这些,那么保留这些行是可以的。

相关内容