[Linux] 已經設好 authorized_keys,但 ssh 登入 CentOS 6 時仍然要求密碼?

[Linux] 已經設好 authorized_keys,但 ssh 登入 CentOS 6 時仍然要求密碼?

最近遇到一個有點困擾的問題,

我已經在 Mac 上執行過下面的指令,

把 Mac 上的 ssh public key 複製到 Linux 的 ~/.ssh/authorized_keys:

ssh-copy-id root@10.1.2.3

 

也確認過 authorized_keys 裡確實有那個 public key。

但是 ssh 登入時,就還是會跳出要輸入密碼的提示:

$ ssh root@10.1.2.3
root@10.1.2.3's password:

 

這個問題只在連線到 CentOS 6 時發生,其他 Linux 沒有問題,

每次都要輸入密碼實在有點困擾…

檢查過 Linux 上 ~/.ssh 和 ~/.ssh/authorized_keys 的權限,

分別是 700 和 600,也都屬於登入的使用者 (root),看起來是正常的:

# ll -a ~/

drwx------.  2 root root     4096 Aug 11 10:25 .ssh

# ll -a ~/.ssh

-rw-------. 1 root root 1323 Aug 11 10:25 authorized_keys

 

查了一下,有人提到在 ssh 加入參數 -v 來查看有無錯誤訊息,

就來試試看吧~

$ ssh -v root@10.1.2.3

...
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/test_user/.ssh/id_rsa RSA SHA256:xxx
debug1: send_pubkey_test: no mutual signature algorithm
debug1: Trying private key: /Users/test_user/.ssh/id_ecdsa
debug1: Trying private key: /Users/test_user/.ssh/id_ecdsa_sk
debug1: Offering public key: /Users/test_user/.ssh/id_ed25519 ED25519 SHA256:yyy
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /Users/test_user/.ssh/id_ed25519_sk
debug1: Trying private key: /Users/test_user/.ssh/id_xmss
debug1: Trying private key: /Users/test_user/.ssh/id_dsa
debug1: Next authentication method: password
root@10.1.2.3's password:

 

注意到它有一行 send_pubkey_test: no mutual signature algorithm

不確定這是什麼,上網查到一篇

SSH-RSA key rejected with message “no mutual signature algorithm”

看說明似乎是 RSA SHA-1 已經在 Mac 被停用了,

但 CentOS 6 的 sshd 較舊,需要使用這個 hash 方式。

 

修正的方法是修改 Mac 上的 /etc/ssh/ssh_config:

sudo vi /etc/ssh/ssh_config

 

在裡面加上  PubkeyAcceptedKeyTypes +ssh-rsa ,例如:

Host *
    PubkeyAcceptedKeyTypes +ssh-rsa

 

這樣子再重新 ssh 登入就不會再提示密碼輸入囉~

(本頁面已被瀏覽過 112 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料