lfaraone Asked: 2009-09-11 13:07:23 +0800 CST2009-09-11 13:07:23 +0800 CST 2009-09-11 13:07:23 +0800 CST 通过原始接口限制 SSH 登录 772 我希望允许该 192.168.1.0-192.168.1.255范围内的任何人都能够使用密码或 SSH 密钥登录,但该范围之外的人只能使用 SSH 密钥登录。 这可以在没有多个 sshd 的情况下完成吗? 我在 Ubuntu 9.04 上。 ubuntu 3 个回答 Voted Best Answer Insyte 2009-09-11T13:30:57+08:002009-09-11T13:30:57+08:00 这是未经测试的,但是在最后设置这样的东西sshd_config应该可以工作: 密码验证无 公钥认证是 RSA认证是 匹配地址 192.168.1.0/24 密码验证是 基本上,您在全球范围内允许公钥身份验证,在全球范围内禁止密码身份验证,然后专门为 192.168.1.0/24 子网中的任何人重新允许密码身份验证。 编辑:您可能已经在配置中的其他地方拥有前三行。如果您这样做,则无需再次添加它们。但是,“匹配”块必须位于文件末尾。 此外,该RSAAuthentication关键字特定于 SSH v1,这是您不允许的,对吧? Devin Ceartas 2009-09-11T13:16:07+08:002009-09-11T13:16:07+08:00 是的,我想是这样。您可以使用 sshd_config 文件中的 AllowUser 和 MatchUser 指令来设置每个用户的配置指令。 freiheit 2009-09-11T13:22:40+08:002009-09-11T13:22:40+08:00 我认为您可以通过使用 PAM 和 Pubkey auth 配置 sshd 来完成这项工作,然后将 PAM 配置为仅允许来自某些子网的访问。这个诡计有效,因为 sshd 不会向 PAM 询问任何关于基于密钥的身份验证的信息。 在 /etc/ssh/sshd_config 中(我认为这些都是 Ubuntu 上的默认值),例如: PubkeyAuthentication yes ChallengeResponseAuthentication no UsePAM yes 在 /etc/pam.d/sshd 中取消注释 pam_access 行(我相信在 Ubuntu 上它以正确的顺序出现,但被注释掉了): account required pam_access.so 在 /etc/security/access.conf 中: +:ALL:192.168.1.0/24 注意:我根本没有测试过这个。
这是未经测试的,但是在最后设置这样的东西
sshd_config
应该可以工作:基本上,您在全球范围内允许公钥身份验证,在全球范围内禁止密码身份验证,然后专门为 192.168.1.0/24 子网中的任何人重新允许密码身份验证。
编辑:您可能已经在配置中的其他地方拥有前三行。如果您这样做,则无需再次添加它们。但是,“匹配”块必须位于文件末尾。
此外,该
RSAAuthentication
关键字特定于 SSH v1,这是您不允许的,对吧?是的,我想是这样。您可以使用 sshd_config 文件中的 AllowUser 和 MatchUser 指令来设置每个用户的配置指令。
我认为您可以通过使用 PAM 和 Pubkey auth 配置 sshd 来完成这项工作,然后将 PAM 配置为仅允许来自某些子网的访问。这个诡计有效,因为 sshd 不会向 PAM 询问任何关于基于密钥的身份验证的信息。
在 /etc/ssh/sshd_config 中(我认为这些都是 Ubuntu 上的默认值),例如:
在 /etc/pam.d/sshd 中取消注释 pam_access 行(我相信在 Ubuntu 上它以正确的顺序出现,但被注释掉了):
在 /etc/security/access.conf 中:
注意:我根本没有测试过这个。