禁用特定接口上的 SSH 密码验证

禁用特定接口上的 SSH 密码验证

我有一台 OpenWrt 路由器,我想禁用 SSH 上的密码身份验证,以便只能使用密钥进行身份验证。这可以通过以下方式轻松实现导游但是,在文档中,我只想禁用 WAN 接口上的密码身份验证,这可能吗?

答案1

这个答案适用于 OpenSSH。 OpenWRT 默认包含 Dropbear,因此您需要替换它,如下所示这个链接(基本上,安装openssh-server和禁用dropbear)。

使用 OpenSSH,您可以使用两种可能的机制来实现您想要的功能:

  1. sshdLAN 和 WAN 接口的单独配置。仅当您有静态 WAN IP 时,此功能才有效(无法告知sshd侦听特定接口,只能侦听特定 IP)。
  2. 仅允许 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 服务器实例,每个实例侦听不同的接口。

相关内容