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


22

我有一个在Ubuntu Precise 12.04上运行的OpenSSH 5.9p1服务器,该服务器接受来自内部网络和Internet的连接。我想对来自Internet的连接要求进行公钥身份验证,但对于来自内部网络的连接则接受公钥或密码身份验证。我可以配置OpenSSH来实现吗?

Answers:


34

中的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块为止。匹配块的位置不正确可能会导致无法连接。


3
请注意:如果您执行此操作,并将SSH从某些可公开访问的计算机(jumphost)转发到具有上述配置(内部主机)的计算机,您仍可能会受到攻击,因为Jumphost的源IP将是RFC1918地址,并且允许对内部主机进行密码身份验证。
c4urself
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.