Sunforger

Sunforger

伺服器拒絕了我們的金鑰!

想着給組裡的伺服器配一個 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 系統中重新生成了秘鑰,然後上傳到伺服器,問題就奇奇怪怪地解決了!
202@2x

更新#

近期由於系統重裝,又配了一次 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後綴的文件

經過測試,可以登錄

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。