如何允许来自给定IP范围的基于密码的login,强制他人使用PubKey

我们希望设置一台RHEL服务器以允许从内部networking进行密码login,并禁止使用外部login密码。 任何想法如何我们可以实现,而不运行另一个守护进程? 内部networking在不同的接口上,但是我不知道如何configurationSSHd以在接口之间进行差异化。

你需要“匹配”指令。 就像是:

PasswordAuthentication no Match Address 192.168.0.0/16 PasswordAuthentication yes 

阅读sshd_config(5)了解详情。

这是你的问题的答案。 但是,一般来说,键可能是比密码更好的方法,因为很多原因,特别是使用ssh-agent(1)的能力。 你可能要仔细考虑你是否真的有一个允许密码的有效理由。

我不认为只有一个SSH服务器有办法做到这一点。 我认为更大的问题是你为什么要这样做? 有没有一些程序上的原因,你不能不禁止密码和使用公钥?

你可以这样做的一种方法是在服务器上运行两个sshd实例,使用不同的configuration和不同的端口。 使用iptables允许访问一个接口上的一个服务器,另一个设置为只允许密码,一个只允许公用密钥。