仅允许从内部网络对 SSH 服务器进行密码验证

仅允许从内部网络对 SSH 服务器进行密码验证

我有一台在 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 块的位置不正确,可能会导致无法连接。

相关内容