所有用户只能使用密钥登录,除了 John,他可以使用密钥登录,如果他使用本地网络192.168.1.x
,那么他可以使用密码 ssh,但他不能使用来自随机 IP 的密码登录。
我不知道如何为约翰写规则。我做 AllowUsers[email protected]
吗?但是如何从不同的 ips 中拒绝 John 呢?如果 John 使用不同的端口连接会发生什么?
最好的方法是什么?
所有用户只能使用密钥登录,除了 John,他可以使用密钥登录,如果他使用本地网络192.168.1.x
,那么他可以使用密码 ssh,但他不能使用来自随机 IP 的密码登录。
我不知道如何为约翰写规则。我做 AllowUsers[email protected]
吗?但是如何从不同的 ips 中拒绝 John 呢?如果 John 使用不同的端口连接会发生什么?
最好的方法是什么?
您应该能够使用
Match
指令执行此操作。在开始之前,请确保您至少有一个帐户可以对服务器进行基于密钥的有效访问(或物理访问)。
然后编辑服务器的
/etc/ssh/sshd_config
文件,在最后添加你的匹配块,例如请注意,这表示两个条件
User john
和Address 192.168.1.0/24
,必须满足这PasswordAuthentication yes
两个条件才能应用。0/24
192.168.1.x 子网中任何地址的CIDR表示法。现在您可以在配置的主体中禁用其他用户地址组合的密码验证,找到开头的部分:
并更改默认值
至
最后,重新启动服务 - 对于
systemd
基于 init 的系统,您可以使用您可以通过强制客户端尝试来测试不匹配的用户不能再使用密码进行身份验证,例如
这应该会失败并显示如下消息
而
john
应该提示输入密码:如果您希望密码身份验证成为本地网络上的首选机制
john
,您可能需要在相应的客户端配置中指定,即~/.ssh/ssh_config