
我在 PuTTY 上產生了兩個金鑰:公用金鑰和私有金鑰。在 Windows 上使用這個軟體我可以像平常一樣連接到伺服器。
然後我嘗試將這些檔案複製到我的 ubuntu 機器(21.04)中,並登入載入私鑰(開啟 putty,寫入,user@hostname
然後在 SSH>Auth 處載入私鑰),但是無法連線被拒絕伺服器如此錯誤所示:
Unable to load key file '~/private_key.ppk' (PuTTY key format too new).
一個新興的窗口出現說:
No supported authentication methods available (server sent: publickey)
因此,如第一個錯誤所示,透過 PuTTYgen 將私鑰轉換為 openssh PEM 格式,然後將該檔案載入到 SSH/Auth 後,「不支援」訊息仍然存在:
Unable to use key file '~/private_key_openssh' (OpenSSH SSH-2 private key (old PEM format) ).
有什麼方法可以在 Ubuntu 上使用這些按鍵嗎?也許透過 openssh ?
一些有用的信息:
- 新安裝的 Ubuntu 版本
- 膩子 0.74
嘗試時的輸出ssh -i ~/.ssh/private_key.ppk user@hostname
載入金鑰“~/.ssh/private_key.ppk”:格式無效 user@hostname:權限被拒絕(公鑰)。
答案1
Adonis 和 Thomas 的回答/評論基本上是正確的,但缺乏一些我在實踐中需要的細節。由於我沒有足夠的聲譽來發表評論,我將通過此答案添加詳細資訊。
將 Putty PPK 匯出為 OpenSSH 格式。
為此,請打開 PuttyGen,載入私鑰,然後轉到“轉換”功能表並選擇“匯出 OpenSSH 金鑰”
在 Ubuntu(或衍生版本)上使用 OpenSSH 金鑰
如果您直接將其用於 SSH,則可以按照 Adonis 提到的那樣使用它。但是,如果您間接需要它(例如與原始碼控制系統一起使用)怎麼辦?
將其複製到 Linux 上的 ~/.ssh 資料夾中。如果您之前沒有在 Linux 機器上使用過 SSH,您可能需要建立此資料夾。當您建立 .ssh 目錄時,您需要chmod 0700 ~/.ssh
讓 ssh 工具認為目錄確實是您私有的。
如果您從 Windows 複製了密鑰文件,現在打開 ~/.ssh 資料夾的終端,然後運行chmod 400 [private key file name]
。這是必要的,因為預設權限(從 Windows 複製時)將為 770; SSH 實用程式會告訴您這太過寬鬆,並且它將忽略該金鑰。不幸的是,它並沒有直接告訴您如何解決問題,但 400 權限(這意味著「我可讀,其他人不可用」)將解決問題。
現在,在終端機上運行eval $(ssh-agent)
.這將開啟本機 SSH 代理,並允許您新增可由其他程式(例如原始碼管理)取得的金鑰。
最後,運行ssh-add ~/.ssh/[private file key name]
。只要你記得設定權限,它就應該可以工作,並且你應該能夠使用 git/hg/etc。使用您的 SSH 金鑰。
答案2
連結成功!
authorized-keys
正如 Thomas Ward 所建議的,第一步是將 private_key 檔案載入到 Windows 上的 PuTTYgen 並將公鑰複製到該檔案。
此外,將 private_key 檔案匯出為 openssh 格式(第一個選項)到 private_OpenSSH 文件,然後將其移至 ~/.ssh 目錄以變更權限:
chmod 400 private_OpenSSH
讓我最終能夠聯繫到:
ssh -i ~/private_OpenSSH user@hostname