我想允许非 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 会话。如果您有理由限制这些,那么保留这些行是可以的。