要求从特定IP范围loginSSH密钥

我需要能够从远程站点访问我的服务器(Ubuntu 8.04 LTS),但我想担心一点密码复杂性。 因此,我想要求SSH密钥用于login,而不是名称/密码。 然而,我仍然有很多需要了解安全性的知识,而当我尝试设置这个testing框时,已经严重破坏了一个testing框,我非常清楚有可能在试图完成这个任务时搞砸自己。 所以我有第二个目标:我想要求某些IP范围(例如10.0.0.0/8)可以使用名称/密码login,但其他人必须使用SSH密钥才能login。

我怎样才能达到这两个目标?

这里已经存在一个非常类似的问题 ,但是我不能完全弄清楚如何从这些信息中得到我想要的。

目前的策略是:阅读PAM文档(pam_access看上去很有希望)并查看/ etc / ssh / sshd_config。

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


目前正在运行的解决scheme:

 #全局拒绝通过密码login,只允许SSH密钥login。  
 PasswordAuthentication no  

 #但允许来自局域网的连接使用密码。  
匹配地址192.168。*。*  
     PasswordAuthentication yes  

匹配地址块也可以有用地作为匹配用户块,回答我的第二个问题。 现在我只是分析CIDR地址的失败,直到我安装的一个怪癖,并决定再试一次,当我从Ubuntu 10.04不久后。 PAM结果是没有必要的。

不确定PAM如何适应这一点。 使用最新版本的SSH(比如8.04版本),应该像使用匹配块来容纳地址空间一样简单。

所以你的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