[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 登入就不會再提示密碼輸入囉~
(本頁面已被瀏覽過 153 次)