在Linux上最常使用的遠端連線協定為SSH(Secure Shell),SSH除了可以登入到遠端電腦使用命令列介面之外,還有其他方便的應用。例如Git版本控制軟體的push和pull指令,也都是透過SSH來進行資料傳輸。因此如果有SSH的連線需求的話,可以參考這篇文章,產生專屬於自己的SSH金鑰,讓SSH登入不必輸入帳號密碼,使用起來更方便!



什麼是SSH金鑰?

SSH金鑰是一個SSH權限的驗證方式,讓SSH伺服器端能夠使用信任的客戶端自行產生獨特的金鑰號碼,來登入SSH伺服器,這樣一來SSH伺服器端就不需要提供給客戶端任何的帳號密碼了。

如何產生SSH金鑰?

在Linux系統下,每個使用者都可以擁有自己的SSH金鑰,金鑰將會以檔案的形式存放在家目錄中的「.ssh」目錄下,常使用RSA加密演算法來生成金鑰,檔名預設為「id_rsa」。在產生自己的RSA SSH金鑰前,可以先到這個目錄下查看是否已經有此檔案存在,再決定是否要產生。

產生SSH金鑰可以直接在終端機下輸入以下指令:

ssh-keygen

產生金鑰時,終端機上會顯示下列問題。如果直接按Enter跳過,就是使用預設值。

  • Enter file in which to save the key:輸入金鑰儲存的檔名,預設應該會在家目錄中的.ssh目錄下,檔名是id_rsa
  • Enter passphrase:金鑰的密碼,預設是沒有密碼的,有需要的話可以填寫。
  • Enter same passphrase again:再重複一次Enter passphrase的設定,確保設定無誤。

設定完成後應該會出現以下畫面:

ssh-key

在某些應用上,可能會要求使用者在SSH金鑰上添加一些訊息至註解(Comment)中,像是電子郵件地址之類的,用來識別金鑰的持有者。如果有需要,可以在一開始下達ssh-keygen指令前,再加上-C(大寫的英文C)參數來指定註解內容。

ssh-keygen -C "your_email@example.com"

執行ssh-keygen指令後,會在目標檔案(SSH私鑰檔案)的同目錄下,多產生一個.pub檔,裡面的內容就是SSH的公鑰,為純文字格式。將公鑰給SSH伺服器儲存後,就可以直接透過SSH私鑰來與擁有公鑰的伺服器進行SSH連線,而不需輸入伺服器的帳號密碼。