我有一个在Ubuntu Precise 12.04上运行的OpenSSH 5.9p1服务器,它接受来自内部网络和Internet的连接.我想要对来自Internet的连接进行公钥认证,但是接受来自内部网络的连接的公钥或密码认证.我可以配置OpenSSH来实现吗?
解决方法
/ etc / ssh / sshd_config中的Match指令允许您有选择地应用配置指令.其中一个可用的匹配条件是连接的源地址,因此可用于实现所需的内容.您可以默认禁用密码身份验证,然后为内部网络IP范围的连接启用密码身份验证. (请注意,您还要禁用ChallengeResponseAuthentication以防止使用密码.)此示例允许从所有RFC1918专用IP范围进行密码身份验证.有关详细信息,请参阅
sshd_config manpage.
PasswordAuthentication no ChallengeResponseAuthentication no Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 PasswordAuthentication yes
请注意,匹配块应添加到文件的末尾,否则其后的所有内容将匹配,直到下一个匹配块. Match块的错误定位可能导致无法连接.