我希望允许192.168.1.0-192.168.1.255范围内的任何人都能够使用密码或SSH密钥login,但该范围之外的人只能使用SSH密钥login。
这可以完成不超过一个sshd?
我在Ubuntu 9.04上。
这是未经testing的,但在sshd_config最后设置类似这样的东西应该可以工作:
PasswordAuthentication no PubkeyAuthentication yes RSAAuthentication是 匹配地址192.168.1.0/24 PasswordAuthentication yes
基本上,您全局允许公钥validation,全局禁止密码validation,然后专门为192.168.1.0/24子网中的任何人重新validation密码validation。
编辑:你可能已经有你的configuration其他地方的前三行。 如果你这样做,他们不需要再被添加。 然而,“匹配”块必须在文件的末尾。
此外, RSAAuthentication关键字是特定于SSH v1,您不允许,对吧?
是的,我想是这样。 您可以使用sshd_config文件中的AllowUser和MatchUser指令来设置每个用户的configuration指令。
我认为你可以通过使用PAM和Pubkey身份validation来configurationsshd来完成这项工作,然后configurationPAM来仅允许来自某些子网的访问。 这个技巧是有效的,因为sshd不会询问关于基于密钥的validation的任何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
注意:我没有testing过这个。