![禁用特定接口上的 SSH 密码验证](https://linux22.com/image/36331/%E7%A6%81%E7%94%A8%E7%89%B9%E5%AE%9A%E6%8E%A5%E5%8F%A3%E4%B8%8A%E7%9A%84%20SSH%20%E5%AF%86%E7%A0%81%E9%AA%8C%E8%AF%81.png)
我有一台 OpenWrt 路由器,我想禁用 SSH 上的密码身份验证,以便只能使用密钥进行身份验证。这可以通过以下方式轻松实现导游但是,在文档中,我只想禁用 WAN 接口上的密码身份验证,这可能吗?
答案1
这个答案适用于 OpenSSH。 OpenWRT 默认包含 Dropbear,因此您需要替换它,如下所示这个链接(基本上,安装openssh-server
和禁用dropbear
)。
使用 OpenSSH,您可以使用两种可能的机制来实现您想要的功能:
sshd
LAN 和 WAN 接口的单独配置。仅当您有静态 WAN IP 时,此功能才有效(无法告知sshd
侦听特定接口,只能侦听特定 IP)。- 仅允许 LAN 中的客户端进行密码验证。
选项1:
在 LAN 配置文件(例如/etc/ssh/sshd_config
,默认文件)中,您将具有以下内容:
PasswordAuthentication yes
Listen 192.168.1.1:22
在 WAN 配置文件中(例如/etc/ssh/sshd_config_wan
:
PasswordAuthentication no
Listen 10.1.1.1:22
在上面,192.168.1.1 是您的 LAN 接口 IP,10.1.1.1 是您的 WAN IP 地址,在这两种情况下,22 都是要侦听的端口。您可以使用-f
选项指定要加载的配置文件sshd
。您需要将默认的初始化脚本复制到新脚本并将其修改为sshd
使用-f /etc/ssh/sshd_config_wan
.
选项2:
在/etc/ssh/sshd_config
,将其放在结尾文件的:
PasswordAuthentication no
Match address 192.168.1.0/24
PasswordAuthentication yes
在这里,您将禁用密码身份验证,LAN 上的地址除外(此处假设为 192.168.1.0/24)。
答案2
您可以运行两个具有不同配置的 SSH 服务器实例,每个实例侦听不同的接口。