Ssh
在特定介面上禁用 SSH 密碼驗證
我有一個 OpenWrt 路由器,我想禁用 SSH 上的密碼身份驗證,以便只能使用密鑰進行身份驗證。這可以通過遵循文件中的指南輕鬆實現,但是,我只想在 WAN 介面上禁用密碼驗證,這可能嗎?
這個答案適用於 OpenSSH。OpenWRT 預設包含 Dropbear,因此您需要根據此連結替換它(基本上,安裝
openssh-server
和禁用dropbear
)。使用 OpenSSH,您可以使用兩種可能的機制:
- LAN 和 WAN 介面的單獨
sshd
配置。這只有在你有一個靜態 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
您可以使用 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)。