我正在运行 Debian stable,我希望为我的 'sftponly' 组中的用户建立以下环境:
从我的实验和研究来看,sshd_config 中的以下节似乎让我达到了 90%:
Match group sftponly
ChrootDirectory /sftp/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Run Code Online (Sandbox Code Playgroud)
这给了我监禁的 SFTP 而没有 SSH,这很好。但它也禁用了 SCP,这不太理想,因为很多客户端是使用 SCP 而不是 SFTP 的遗留脚本进程(我们正在替换的服务器支持这两种协议),并且因为这些客户端不受我们的控制并且很容易修改后,完全禁用 SCP 可能不切实际。
此配置将禁用 SCP 是有道理的,因为传入的 SCP 连接会导致 sshd 以该用户的身份通过用户的登录 shell 生成一个“scp”进程。如果不是特殊的“internal-sftp”处理程序,SFTP 似乎通常也是如此。
所以,我想我的问题是:有没有一种方法可以达到与“internal-sftp”相同的效果,但对于 SCP,而不使用像 scponly 和 rssh 这样的第三方工具?'internal-sftp' 的真正好处在于它不需要用支持文件设置监狱,或处理可能被利用的第三方 setuid 二进制文件(特别是 rssh,它有被利用的历史)。