拒绝所有传入的 ssh(除了一个用户)并同时允许一组用户使用 sftp

拒绝所有传入的 ssh(除了一个用户)并同时允许一组用户使用 sftp

我希望我的服务器虚拟机传入 SSH/SFTP 连接同时满足以下要求。请注意,我不想限制传入 IP,因此我想为任何 IP 打开端口,但有以下限制:

1) 我想拒绝任何传入到我的虚拟机的 ssh 连接(除了用户名为“MyVMAdmin”的用户)

2)同时我想为一组用户(假设“user1”、“user2”和“user3”)启用 sftp(仅 sftp 而不是 ssh)

有人能帮助我按顺序进行哪些配置修改吗?

谢谢

答案1

“man sshd_config” 将向您显示您需要在 sshd 配置文件(通常是 /etc/ssh/sshd_config)中更改的设置。

AllowUsers 允许您指定哪些用户可以访问 ssh。这应该可以满足您的第一个要求。

AllowGroups 允许您指定哪些组应该被允许登录。这将满足您的第二个要求,但它会与您的第一个要求相冲突。

我认为解决这个矛盾的最简单方法是运行两个 ssh 守护程序 - 一个在通常的端口 22 上运行,禁用 sftp,具有您想要的 AllowUsers 设置,另一个在另一个端口号上运行,只允许 sftp,并且具有您想要的 AllowGroups 设置。

当然,运行两个守护进程很麻烦,事实证明 sshd 支持另一种选择。阅读“匹配”选项,如示例这里。您可以设置“匹配”块以按用户或组进行匹配。当用户或组匹配时,将为该会话启用新的配置选项。这有点棘手,但看起来“匹配”块中的“ForceCommand”设置(可能与“ChrootDirectory”一起使用)可用于将特定组重定向到特殊的进程内 sftp 服务器。

如果您要使用“匹配”选项,请务必测试所有可能的情况,以确保您确实按照预期的方式限制用户。如果您不能承受任何错误(即如果错误的用户访问了命令行或 SFTP 服务器,那将是一场灾难),那么两个守护进程选项会更安全。

相关内容