我正在尝试让运行 Ubuntu 10.04 的 SSH 服务器仅允许来自本地网络的密码登录。对于所有其他用户,尤其是通过防火墙从互联网登录的用户,我想强制使用基于密钥的身份验证。我在 Google 上搜索了一下,找到了以下内容。
以下是我所做的更改/etc/ssh/sshd_config
:
PasswordAuthentication yes
Match Address 192.168.5.0/24
PasswordAuthentication yes
这样,我就可以从另一台具有 192.168.5 的地址的机器登录,但是由于缺少公钥,它不允许我进入:权限被拒绝(公钥)。
答案1
这应该可以解决问题:
PubkeyAuthentication yes
PasswordAuthentication no
Match Address 192.168.5.* PasswordAuthentication yes
前两行将默认启用公钥认证。最后一行将覆盖匹配网络 (192.168.5.0/24) 的其他两行。
答案2
匹配条件后的换行符很重要。这应该有效:
PasswordAuthentication no
Match Address 192.168.5.0/24
PasswordAuthentication yes
编辑:我很惊讶另一个答案有效!它对我不起作用。好吧,这样你应该能够使用 CIDR 网络掩码。