SSH 報錯解決方法記錄匯總


SSH 密鑰簽名失敗

情景: 使用 SSH 密鑰驗證身份時
報錯:

sign_and_send_pubkey: signing failed: agent refused operation

環境: Debian 9.7 (Stretch)
解決方法:

1)確認問題

在 SSH 命令前添加“SSH_AUTH_SOCK=0”:

SSH_AUTH_SOCK=0 ssh <username>@<server>

如果可以正常登錄,而顯示變量 SSH_AUTH_SOCK 內容時輸出:

echo $SSH_AUTH_SOCK
/run/user/1000/keyring/ssh

則我們就可以確定是由 Gnome Keyring 帶的 SSH Agent 導致的密鑰簽名失敗問題。Gnome Keyring SSH Agent 並不能總是正確處理所有格式的 SSH 密鑰。但是它卻試圖處理所有的 SSH 密鑰,從而出錯。(典型的沒有金剛鑽,還要攬這瓷器活兒)

如果還是沒法正常登錄,說明是 ssh-agent 不存在或者存在但沒有找到密鑰。可以參考這里,幾條命令就可以解決。

2)解決問題

之前提到,如果 ssh 命令前面添加 SSH_AUTH_SOCK=0 后可以正常登錄,說明是 Gnome Keyring SSH Agent 在試圖處理它可能並不能處理的 SSH 密鑰編碼方式。那么解決方法就可以有兩種:禁用 Gnome Keyring SSH Agent 自啟動,或用 ssh-keygen 重新生成、上傳 Gnome Keyring SSH Agent 能夠處理的編碼方式所生成的公私鑰對。

其中,第二種方法在這篇博文中提到過。這種方法的優點是不用更改本地系統設置,缺點是需要更新所有服務器的公鑰,對於那些將公鑰上傳到多個服務(比如 GitHub,GitLab,DigitalOcean 等)的人來說需要做很多重復性操作,比較麻煩;

第一種方法會更改系統設置,但也只是最低限度的更改(僅禁用 Gnome Keyring 下的 SSH Agent 開機自啟動),幾乎不影響系統功能。因此,Gnome Keyring SSH Agent 完全可以由 OpenSSHssh-agent 替代。
具體方法如下:

  1. 打開搜索欄,搜索 Startup Applications 應用並運行(如果沒有安裝會提示安裝);
  2. 在彈出的窗口中找到 SSH Key Agent GNOME Keyring: SSH Agent,關閉自啟;
  3. 重啟系統。

Written with StackEdit.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM