[Linux] SSH 金鑰是什麼?私鑰與公鑰?如何自己產生一個SSH金鑰?

可能有很多人跟我一樣是半路出家剛開始摸索Linux的朋友們,搞不懂為什麼在Linux或是VPS中總是都會提到SSH金鑰嗎?這裡就用小小的篇幅來簡單解釋一下 SSH Key 是做什麼用的!以及應該如何使用!讓大家可以快速的上手哦!

當一組SSH Key產生的時候,會同時產生 Public Key (公鑰) 與 Private Key(私鑰) 兩個部分,公鑰有點像是一道題目,而私鑰有點像是解答,當公鑰與私鑰透過一定的加密方式比對加密過後,如果結果能夠相符合即代表驗證成功!

用比較簡單的方式來說,就是將一組複雜度與長度極高的密碼儲存為一個檔案,而登入的時後直接提交這一個檔案來當作你登入用的密碼,盡可能的增加在網路中被攔截破解的難度,來得到較安全的連線操作。

 

金鑰範例:

Public Key (公鑰):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEA1Xp/0hUwbQF7a0xtkFipbkDvNyUL7h/qcTO7Rix8J7lLcDQNnfhqu6SaLPHMqvOdPzyS81Wn+PK2DPaTLjd26DM05yTQYCss4uMfFlwhhpYEp8VrFLRJwOZUM8S2oxPojIOrh7KYq0wum2iQiM2VSY9kh7DttgZVY0sxjbE58oUx2TCtcCLV1OpdfC3vrtb4VwjnVOl27Eu3S/XYdpSiMN0IEqvuH13ODeoOvhuYqqr3fDuON0MnHSQJSx+shlnZ14KHvrBDq/IV1ghjPAdm3A3tjrEdpcf0IWRg+jYviJhWzK38j4O1U6n2ubOIV9MOBBXlsOYdSlo0yJTr7ptJ6w== rsa-key-20210616

Private Key (私鑰):

AAABAFaLm5pbngKtkuZParAj8ak861uLjzcGBRkiz2GjVO2CeIdvDHB5d2DUByb6
Pjd3hPAfedhFUe9No8AQ749G6wQwb2SgOM0KlagW4xbnFIKrhVjFp/OjCSSwZ1NB
6S1bGRZe5KyiWZGNllqt2brrj4yGPYMeNtsXUwyUGwIXaoTpJe3Uz5RMLGrHkIg0
wn61Zyg0J63vN0+U3fPX35OHqaESz1tqLCrfMxrpGaAS2+dbebNMSmYuW/x4KYZA
eDKHHYERHOCbn+uL6YA/wbxn4HXyZGVPeSQ6wQ6wXtQl8hXvy5t96nvylScbxRsx
W+6pO8xcDuG/a6ce03BzXmma7EUAAACBAPdQS+vc0dcuDQvtNw4EFewHqyv8dk59
UWrQ+laOLEHv6kpTCzQvtee6X6qFFkcGB7+GwXSV/DEjhNK2TewSPc025VlCd4ao
3bp/C+5m57QmN+xAaqhR+xu4Abq03Krj2QheR9vVcCMRW4YNOWjWtZxx8Ivop4P3
UtGwigJ/mOMXAAAAgQDc+fn0vx2iKAIgPv1GLfCFUpjQ762gAAKPZcTi8/ebs6I1
vAE77E4kABg2FJKIjBbpoZvIgxjf4DKL40PLKqyht5UadFJ2zyGj53BBnf1V1yrF
ZXFblAi379G8XC8ebqMC3ckimWfeFQnw4N48vPN3qyAkAczUDCG/8ZkAjKZkTQAA
AIEA8tfe4XqRkpWQ5f8uKkzOyzpQA5WI5cbNR5Nm2i+JjXEHAP7hPfxVRPnxM/nu
2NyWbVeQ75zayHcsnCEyoQQ1SqZHQLu7qqbPn0A/sNMMLmzjPffXcO0/tE3YYNaw
3yW/KYlaiHDy2ioDbDpEC3LVarz7oGsv8ho89nZXHZj7SxU=

 

如何取得SSH金鑰?

如果你使用的是一些線上的VPS服務等,他們通常都可以在線上產生SSH金鑰,你只需要將他們提供的Private Key(私鑰) 下載下來存放好就可以了!
當需要進行SSH連線的時候,在你的Cliten(客戶端)上選定這個Private Kay(私鑰)檔案後,即可順利登入這個SSH連線

不過,線上下載下來的 Private Key(私鑰) 通常都不會為這個私鑰檔案鎖上密碼,也就是任何人只要有這個檔案就可以順利登入連上你的這個SSH!
因此你也可以試著產生一個自己的SSH金鑰!



產生 SSH 金鑰

1. 在 Windows 下,可使用 PuTTY Key Generator 來快速的產生一個 SSH金鑰!

PuTTY 是一個老牌經典的 SSH Client,而它還提供了一個 SSH金鑰 的產生器,由於這個功能相當的方便且熱門,他們的官方網站上亦有同時單獨開放這個檔案產生器下載!

PuTTY  官方下載頁面:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

當我們進入這個下載頁面後,找到 puttygen.exe 這個檔案,並且下載與自己系統相對應的版本即可!

打開後,我們會看到介面相當的簡約,此時我們只需要點下「Generate」就可以產生一個金鑰了!

點下「Generate」之後,會看到畫面上出現一條進度條,千萬不要傻傻的楞在那,你必須要將滑鼠游標在這個產生器內空白的地方四處隨意移動,這個進度條才會繼續跑!
我想這個步驟是它要藉由滑鼠的位置產生一些隨機的數值,來確保每一個金鑰的隨機性~

當進度條跑完後,看到下面這個畫面就代表金鑰產生完畢囉!

Key comment : 金鑰的註解 (這個部分我通常都會寫上這個金鑰是要給誰或是給什麼設備使用的,方便自己辨識)

Key passphrase: Private Key(私鑰)的密碼 (就是當你要載入這個金鑰的時候,你必須要透過這輸入密碼才能夠使用這組私鑰,算是多一重保障)

Confirm passphrase:再次輸入私鑰密碼,確保沒有輸入錯誤。

接著我們便可以點擊 Save public key 與 Save private key 兩個按鈕各自將公鑰與私鑰儲存下來!

但我同時會建議你,將上方Key框框中的那一大串亂碼另外儲存成文字檔案,因為在大多數我們要設定公鑰的場合,我們都必須要使用如框框中的這個格式才可以!而剛才點擊 Save puvlic key 所儲存的格式並不是這樣,因此要避免一些麻煩就最好額外費點心思囉。

 

2. 在 Linux 下輸入指令產生 SSH金鑰

相較於在windows下產生一個SSH金鑰,在Linux下產生金鑰就變得相對更簡單許多,只要輸入這個簡單的指令即可!

# ssh-keygen

輸入這個指令後,系統會詢問你你想要將金鑰儲存在哪裡

Generating public/private rsa key pair.
Enter file in which to save the key (/home/userName/.ssh/id_rsa):

系統會預設將金鑰儲存在預設的路徑 ( /home/userName/.ssh/id_rsa ) 這個路徑下!如果沒有特殊需求的話可以直接按下Enter讓它儲存在這個預設位置!

接下來會詢問是否要替私鑰設定密碼,如果不要設定密碼的話請直接按下Enter,如果要設定密碼的話請在此輸入!
(如同Linux其他地方輸入密碼一樣,這裡輸入密碼是不會顯示星號的!輸入完直接按Enter就可以囉~)

Enter passphrase (empty for no passphrase):

接著會在出現 Enter same passphrase again: 請你在輸入一次密碼,確保密碼是沒有輸入錯誤的!

再按Enter就會出現已經金鑰建立完成,以及儲存的路徑了!

Your identification has been saved in /home/userName/.ssh/id_rsa.
Your public key has been saved in /home/userName/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:KO0z2/MfSgVvU8NUaxyyKaujHb8S7qv5PZVqEadEX5E userName@ServerName.loocaldomain
The key's randomart image is:
+---[RSA 2048]----+
|             ..++|
|           . o=Eo|
|          o..o=+ |
|     . .   =o+.. |
|    . o S ..O .  |
|     o   ..= +   |
|      + .+o =    |
|       ==+== .   |
|      .+=B*=+    |
+----[SHA256]-----+

Public key (公鑰) 預設是儲存在 /home/userName/.ssh/id.rsa.pub 這個檔案內
Private key (私鑰) 預設則是儲存再 /home/userName/.ssh/id.rsa 這個檔案內
如果要作為SSH Client 登入使用的話,請記得將這個 Private key(私鑰) 下載下來哦!

 

延伸閱讀

MobaXterm – 視覺化且可以滑鼠選擇檔案的 SSH Client 客戶端連線軟體推薦

[Linux] sftp – Linux架構下不必另外安裝的一種FTP檔案傳輸

 

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *