停用特定介面上的 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 伺服器實例,每個實例偵聽不同的介面。

相關內容