想着給組裡的伺服器配一個 sshkey 這樣就可以省去每次輸密碼的麻煩了。但似乎…… 伺服器有自己的想法。
記錄一個奇怪的 bug,以及一個奇怪的修復方式。
操作#
在伺服器用戶目錄下的 .ssh
文件夾下運行 ssh-keygen -t rsa
生成秘鑰。
然後將私鑰下載到本地的 windows 機器上。通過 mobaxterm 配置 sshkey 登錄
到這裡都很順利。直到登錄的那一刻
Server refused our key!
秘鑰被拒絕,需要輸入密碼才能進入。
嘗試#
思路 1:在 /etc/ssh/sshd_config
中配置關閉 StrictMode
但由於伺服器是多人使用,不是很懂,恐造成權限問題,故暫不考慮這種方法。
思路 2:調整權限設置以滿足 StrictMode
的要求。 遠程連接伺服器 Server refused our key | CSDN 博客
思路 3:由於 Openssh
版本問題,導致 RSA
加密算法不被支持。需要在 sshd_config
文件中配置支持 RSA
mobaxterm 出現 Server refused our key 的問題 | CSDN 博客 或者換用其他加密算法 使用 Ed25519 算法生成你的 SSH 密鑰 | 知乎
思路 4:開啟詳細的日誌,定位問題。ssh 配置 key 後提示 Server refused our key | CSDN 博客
前三個思路並沒有解決我的問題,第四個思路給了我更多的提示。關鍵的報錯信息是:
mm_answer_keyallowed: publickey authentication test: RSA key is not allowed
有的說是秘鑰不兼容,有的說是 Win32
限制,看的一頭霧水。
解決#
這篇文章給了我一點思路 Can't set up SSH key (PuTTY to Ubuntu Server) | StackExchange 文中說可能是生成的秘鑰格式不正確。
我的嘗試算是歪打正著 —— 我決定不在 linux 伺服器上生成秘鑰,而是在本地的 windows 系統中重新生成了秘鑰,然後上傳到伺服器,問題就奇奇怪怪地解決了!
更新#
近期由於系統重裝,又配了一次 ssh 登錄
系統版本:Ubuntu 22.04.1 LTS
修改配置文件 /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized keys .ssh/authorized keys2
將原本處於註釋狀態的 #
去掉
生成秘鑰
ssh-keygen -t ed25519 -f your_ssh_key_ed25519 -C "your_ssh_key_name"
設置.ssh
文件夾權限 為 700
設置私鑰文件權限 為 600,公鑰文件可以開放 644 權限。 不會影響秘鑰安全性。
設置authorized_keys
文件權限 為 600 如果沒有 authorized_keys
文件,那麼用 touch 命令建一個。
chmod 700 .ssh
chmod 600 .ssh/your_private_key
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
複製公鑰到authorized_keys
文件
cd .ssh
cat your_public_key >> authorized_keys
注意:public key 通常是帶有
.pub
後綴的文件
經過測試,可以登錄