使用 PuTTY 私鑰從 Windows 到 Linux

使用 PuTTY 私鑰從 Windows 到 Linux

我在 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

相關內容