![仅允许从内部网络对 SSH 服务器进行密码验证](https://linux22.com/image/589715/%E4%BB%85%E5%85%81%E8%AE%B8%E4%BB%8E%E5%86%85%E9%83%A8%E7%BD%91%E7%BB%9C%E5%AF%B9%20SSH%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%9B%E8%A1%8C%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81.png)
我有一台在 Ubuntu Precise 12.04 上运行的 OpenSSH 5.9p1 服务器,它接受来自内部网络和互联网的连接。我希望对来自互联网的连接要求公钥身份验证,但对来自内部网络的连接接受公钥或密码身份验证。我可以配置 OpenSSH 来实现这一点吗?
答案1
Match
中的指令允许/etc/ssh/sshd_config
您有选择地应用配置指令。可用的匹配条件之一是连接的源地址,因此可以使用它来实现您想要的功能。您可以默认禁用密码身份验证,然后为来自内部网络 IP 范围的连接启用它。(请注意,您还需要禁用它ChallengeResponseAuthentication
以防止使用密码。)此示例允许从所有 RFC1918 私有 IP 范围进行密码身份验证。请参阅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
注意 Match 块必须加到文件末尾,否则后面的内容都会被匹配,直到下一个 Match 块。如果 Match 块的位置不正确,可能会导致无法连接。