要求从特定 IP 范围使用 SSH 密钥登录

Bri*_*ell 3 remote-access ssh

我需要能够从远程站点访问我的服务器(Ubuntu 8.04 LTS),但我不想担心密码复杂性。因此,我想要求使用 SSH 密钥而不是名称/密码进行登录。但是,我仍然有很多关于安全性的知识需要学习,并且在我尝试设置它时已经严重破坏了测试盒,我敏锐地意识到在尝试完成此操作时可能会搞砸自己。所以我有第二个目标:我想要求某些 IP 范围(例如 10.0.0.0/8)可以使用名称/密码登录,但其他所有人都必须使用 SSH 密钥登录。

我怎样才能同时满足这两个目标?

这里已经存在一个非常相似的问题,但我无法弄清楚如何从这些信息中得到我想要的。

当前策略:通读 PAM 文档(pam_access 看起来很有希望)并查看 /etc/ssh/sshd_config.conf 。


编辑:或者,有没有办法指定某些用户必须使用 SSH 密钥进行身份验证,而其他用户可以使用名称/密码进行身份验证?


当前有效的解决方案:

# 全局拒绝密码登录,只允许SSH-key登录。  
密码认证 否  

# 但允许来自 LAN 的连接使用密码。  
匹配地址 192.168.*.*  
    密码认证是  

匹配地址块也可以用作匹配用户块,回答我的第二个问题。现在,我只是将解析 CIDR 地址的失败归结为我的安装怪癖,并决定在不久后转到 Ubuntu 10.04 时再试一次。事实证明 PAM 不是必需的。

Zor*_*che 10

不确定 PAM 需要如何适应这个。使用最新版本的 SSH(如 8.04 上可用的版本),它应该像使用 Match 块来获取您希望允许的地址空间一样简单。

所以你的 sshd_config 应该包含这样的内容。

# global option no password auth (keys only)
PasswordAuthentication no

# permit password from rfc1918
Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
  PasswordAuthentication yes
Run Code Online (Sandbox Code Playgroud)