[Linux] 修改 sshd 設定檔,調整 ssh 登入的驗證方式 (public key/密碼)
最近友軍的 Linux 專案,把 ssh 的登入選項改變了,
原本使用 ssh key 可以直接登入不用打密碼,現在用了 key 的話,
會看到 Authenticated with partial success,但接著還是要打密碼才能登入:
testuser@localhost ~ $ ssh -i ~/mykey root@172.22.1.1 Authenticated with partial success. root@172.22.1.1's password: [root@centos ~]#
研究了一下,原來這只是修改了 sshd 的設定檔~
打開 /etc/ssh/sshd_config 編輯一下,
可以看到有個 AuthenticationMethods 的設定,目前的值是 publickey,password,
這代表首先要先通過 publickey 的驗證後,再通過密碼驗證 (將 , 想像成 AND 運算)~
如果將這行用 # 變成註解的話,就會回復預設值,
可以用 public key 或是用密碼登入 (二擇一):
#AuthenticationMethods publickey,password
改好之後,要重啟 sshd 的服務:
systemctl restart sshd
重新用 key 登入看看,果然不需要密碼也能直接登入了:
testuser@localhost ~ $ ssh -i ~/mykey root@172.22.1.1 [root@centos ~]#
不使用 key,單純用密碼也能登入:
testuser@localhost ~ $ ssh root@172.22.1.1 Password: [root@centos ~]#
不過從文件的說明來看,AuthenticationMethods 這裡面還可以有空白,好像是代表 OR 運算,
也就是說像 AuthenticationMethods publickey,publickey password 的話,
代表第一步要通過 publickey 的驗證,
接著第二步要通過另一個 publickey 驗證 (和第一個不同的 key) 或是密碼驗證。
查了半天還是有點霧沙沙,不知道有沒有理解錯誤…
參考資料:sshd_config: AuthenticationMethods
(本頁面已被瀏覽過 5,152 次)