只允许从内部networking对SSH服务器进行密码validation

我有一个在Ubuntu Precise 12.04上运行的OpenSSH 5.9p1服务器,它接受来自内部networking和Internet的连接。 我想要从公共密钥身份validation来自Internet的连接,但接受来自内部networking的连接的公钥或密码身份validation。 我可以configurationOpenSSH来实现这个吗?

/etc/ssh/sshd_configMatch指令允许您select性地应用configuration指令。 其中一个可用的匹配标准是连接的源地址,所以这可以用来实现你想要的。 您可以在默认情况下禁用密码身份validation,然后启用它从内部networkingIP范围的连接。 (请注意,您还希望禁用ChallengeResponseAuthentication以防止使用密码。)此示例允许从所有RFC1918私有IP范围进行密码validation。 有关更多详细信息,请参见sshd_config联机帮助页 。

 PasswordAuthentication no ChallengeResponseAuthentication no Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 PasswordAuthentication yes 

请注意,匹配块应该被添加到文件的末尾,否则它后面的所有内容都会匹配,直到下一个匹配块。 匹配块的错误定位可能导致无法连接。