可能有很多人跟我一樣是半路出家剛開始摸索Linux的朋友們,搞不懂為什麼在Linux或是VPS中總是都會提到SSH金鑰嗎?這裡就用小小的篇幅來簡單解釋一下 SSH Key 是做什麼用的!以及應該如何使用!讓大家可以快速的上手哦!
當一組SSH Key產生的時候,會同時產生 Public Key (公鑰) 與 Private Key(私鑰) 兩個部分,公鑰有點像是一道題目,而私鑰有點像是解答,當公鑰與私鑰透過一定的加密方式比對加密過後,如果結果能夠相符合即代表驗證成功!
用比較簡單的方式來說,就是將一組複雜度與長度極高的密碼儲存為一個檔案,而登入的時後直接提交這一個檔案來當作你登入用的密碼,盡可能的增加在網路中被攔截破解的難度,來得到較安全的連線操作。
金鑰範例:
Public Key (公鑰):
Private Key (私鑰):
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檔案傳輸