[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰

PuTTYgen 是生成和處理 SSH 公共 ( public key ) 和私有 ( private key ) 密鑰對的工具,是一款基於 PuTTY 衍生出的工具套件。運行 PuTTYgen 可以產生 RSA 與 DSA 格式的金鑰,也可以與一些其他 SSH 客戶端的私鑰格式做交互操作 ( WinSCP、FileZilla )。

PuTTYgen 可以使用「SSH-1 ( RSA )、SSH-2 ( RSA )、SSH-2 DSA」這三種格式做輸出,預設使用 2048 bits 建立金鑰。

操作 PuTTYgen 這個工具時,除了可以產生 SSH 連線 RSADSA 公鑰私鑰 ( 密鑰對 ) 外,還能加載現有金鑰進行簡易修編。例如幫私鑰加入密碼,變更私鑰密碼,或是變更金鑰註解 ( Key comment )。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_001

Windows 上如果要連線到 Red Hat OpenShift、Google Cloud Platform GCE、Amazon EC2 等雲端平台,使用 PuTTYgen 和 PuTTY 這兩個工具搭配,能方便的建立起 SSH 的連線。

文章中使用的系統為 Windows 7,教學以此做示例操作說明。



操作流程

  1. 下載 PuTTYgen
  2. 建立 SSH「公鑰與私鑰」密鑰對
  3. 更改金鑰註解 ( Key comment )
  4. 私鑰加上密碼,匯入現有私鑰

軟體檔案

軟體名稱:PuTTYgen
檔案連結:PuTTY Download Page
軟體許可:PuTTY Licence
功能特性:產生 SSH 連線 RSA、DSA 公鑰和私鑰密鑰對,加載現有私鑰進行簡易修編。例如:幫私鑰加入密碼,變更私鑰密碼,或是變更金鑰註解 ( Key comment )。




使用方式

下載 PuTTYgen

前往 PuTTY Download Page 頁面,點擊下載最新版本綠色區塊中的「puttygen.exe」。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_101



Step2 建立 SSH「公鑰與私鑰」密鑰對

點擊運行並打開「puttygen.exe」之後,選擇 SSH-2 ( RSA ) 2048 bits,按下畫面中的「Generate」就能開始建立 SSH 「公鑰與私鑰」密鑰對。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_201


當讀取條在跑的時候,要一直使用滑鼠點擊畫面「Key 框格」中所包含的範圍。隨意點取,建立雜湊數據,直到讀取條完全跑完。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_202


讀取條跑完後,即可將上方框格中「OpenSSH authorized_keys」公鑰授權文件複製並貼到應用的平台上使用 (* 例如:OpenShiftGCE )。接著再點擊「Save private key」,將私鑰儲存到電腦中。Key fingerprint 則為金鑰指紋

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_203


這裡的例子,在電腦建立了一個「key」的資料夾,儲存的名稱為「coke.ppk」。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_204



Step3 更改金鑰註解 ( Key comment )

某些線上應用平台,會需要變更  Key comment 才能正常連接 SSH (* 例如 GCE )。

這邊先試著觀察原始的公鑰內容,點取「Save public key」,並儲存公鑰名稱為『public』到「key」資料夾。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_301


如果使用 Notepad++ 開啟「public」公鑰檔案,會發現第二行的「Comment: "rsa-key-20170120"」與 PuTTYgen 上面的數值是相同的。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_302


再使用 Notepad++ 打開「coke.ppk」私鑰檔案,會發現其實私鑰中也附著一份公鑰資料。第三行的「Comment: "rsa-key-20170120"」也與 PuTTYgen 數值是相同的。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_303


也就是說公鑰是私鑰連接至遠端應用平台的橋樑。公鑰 ( 對外公開的金鑰 ),遠端電腦與本地端電腦兩者銜接時的認證機制,當兩方彼此公鑰資料符合,即成立連線的條件。私鑰 ( 私密金鑰 ),就等於開啟秘密連線的鑰匙。

通常在遠端應用平台放入公鑰後,遠端應用平台還會提供一個用戶名稱,用來對接本地端的私鑰。如果在 PuTTYgen 變更金鑰註解 ( Key comment ) 的內容,私鑰與公鑰裡的 Comment 資料也會不同。



Step4 私鑰加上密碼,匯入現有私鑰

如果私鑰加上密碼,在做對接連線時,就要輸入密碼。

私鑰加上密碼

這邊做個小實驗,在  PuTTYgen 上的「Key passphrase」和「confirm passphrase」中,輸入「1234」並按下「Save private key」。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_401


將檔案儲存成「coke-1234.ppk」。並關掉  PuTTYgen。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_402



匯入現有私鑰

重新打開  PuTTYgen ,並按下「Load」。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_403


匯入「coke-1234.ppk」時

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_404


就會出現要輸入密碼的狀態了。

[教學] 使用 PuTTYgen 產生 SSH 連線 RSA、DSA 公鑰與私鑰_405



相關文章

OpenShift 使用 FTP 連線,透過 FileZilla SFTP 管理檔案

[教學 ] 使用 Putty 透過 SSH 連線到 OpenShift 應用程式站台

[教學] Google Compute Engine ( GCE ) 使用 PuTTY SSH 登入實例


留言

  1. 在『Step2 建立 SSH「公鑰與私鑰」密鑰對』的部份,只要在空白區域隨意移動滑鼠就可以了,不用點擊滑鼠。

    回覆刪除
  2. 新的puttygen裡面最外面的介面看不到SSH-2 RSA的選項,這樣做出來的會是RSA的SSH-3 version,在一些server登錄會失敗,會顯示 not a putty ssh-2 private key。
    確認方法是看編出來的ppk檔案,最一開始如果寫的是PuTTY-User-Key-File-3: ssh-rsa,那就是SSH-3版的。
    解決方法是在puttygen裡面最上面的選單選擇key->Parameters for saving key files... 第一個就是選version,請選成2,之後再重新儲存成private key。
    如果只是把PuTTY-User-Key-File-3強制改成PuTTY-User-Key-File-2,會出現Unable to load private key (MAC failed)
    僅此記錄

    回覆刪除
◎ 留言板中提問「代碼」問題,可至『留言代碼轉換器』轉換代碼。

張貼留言

繼續閱讀:

這個網誌中的熱門文章

[教學] LINE 電腦版行動條碼登入設定

[外掛] Chrome 擴充:ColorPick Eyedropper 網頁色碼擷取器

Line 分享按鈕:文章分享語法相容網頁版、行動裝置、APP

[教學] Twitter 手機簡訊、APP 兩步驟驗證設定

[教學] Google Compute Engine ( GCE ) 使用 PuTTY SSH 登入實例

[教學] Blogger 自訂網址綁定自有域名

[外掛] Chrome 擴充:Window Resizer 瀏覽器視窗大小調整比例

[密技] Windows OneDrive Dropbox 移至 SD 卡,讓 SSD 使用壽命更長久

[教學] Facebook APP ID 申請,建立應用程式取得 APP 密鑰