我有一台 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 伺服器實例,每個實例偵聽不同的介面。