如何產生SSH Key

SSH金鑰是一組公鑰(Public Key)和私鑰(Private Key)組成的金鑰對,它可以讓我們在登入伺服器或傳遞資訊時,避免掉輸入密碼所產生的風險,所以安全性較密碼登入來得高。但相對的,若金鑰未加密且不慎被竊取,那麼別人就可以以此金鑰進行登入。本篇文章將教你如何產生SSH Key。

產生ssh key

首先打開命令提示字元(CMD)或是Windows 11的終端機(Terminal),並輸入以下指令來產生Key

請將 {comment} 更改為欲指定的 username,或不指定username,可不必輸入「-C {comment}」

ssh-keygen -C {comment}

輸入儲存位置,或按Enter存至預設位置

Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\user/.ssh/id_rsa):

接下來輸入密碼(可按Enter跳過,但建議輸入密碼以保護金鑰)

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

接著就會看到完成的訊息

Your identification has been saved in C:\Users\user/.ssh/id_rsa.
Your public key has been saved in C:\Users\user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:qqsnqflp5/THGJfggoVbv/Wbe5osa4KZS+HeClx4rEo testuser
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|   .             |
|  .oo .          |
|  .==o .S.       |
| .o=..+.+        |
| E+.+=.B .       |
|.o+**++ =..o.    |
|+++*B+o+.oB=     |
+----[SHA256]-----+

此時在儲存的位置會看到兩個檔案

  • id_rsa:該檔案為SSH的私鑰,請自行保存好
  • id_rsa.pub:該檔案為SSH的公鑰(Public),用來驗證該私鑰是否可配對
  • (補充) *.pem格式:用來編碼金鑰和證書一個base64容器格式(Privacy Enhanced Mail)
  • (補充) *.ppk格式:在Windows上,有些時候不支援pem格式,所以要轉為ppk格式(Putty Private Key)

有時候我們也會需要使用putty或是filezilla使用的*.ppk格式,又或是windows在ssh時所使用的pem格式,所以本篇也額外教學如何得到上述兩種格式的私鑰:

首先需要安裝PuttyGen(或是安裝Putty時也會自動安裝):https://www.puttygen.com/

接下來開啟PuTTYgen,點選「File」、「Load Private Key」

右下角檔案類型改為「All Files」、並載入id_rsa私鑰檔

若有輸入密碼提示,請輸入密碼,接著會看到已成功載入

此時按下「Save private key」即可取得*.ppk格式的私鑰

按下「Conversions」的「Export OpenSSH key」

存檔時,副檔名加上「.pem」即可得到*.pem格式的私鑰。

到目前為止,我們會得到三種格式的私鑰「無副檔名的、ppk的、pem的」和一種格式的公鑰「pub的」