Ssh

在特定介面上禁用 SSH 密碼驗證

  • May 9, 2014

我有一個 OpenWrt 路由器,我想禁用 SSH 上的密碼身份驗證,以便只能使用密鑰進行身份驗證。這可以通過遵循文件中的指南輕鬆實現,但是,我只想在 WAN 介面上禁用密碼驗證,這可能嗎?

這個答案適用於 OpenSSH。OpenWRT 預設包含 Dropbear,因此您需要根據此連結替換它(基本上,安裝openssh-server和禁用dropbear)。

使用 OpenSSH,您可以使用兩種可能的機制:

  1. LAN 和 WAN 介面的單獨sshd配置。這只有在你有一個靜態 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您可以使用 to選項指定要載入的配置文件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)。

引用自:https://unix.stackexchange.com/questions/128444