一般我們登入Linux伺服器可以透過密碼進行登入,
今天要介紹的SSH 公開金鑰認證(Public Key Authentication)
是一種不用打密碼就可以直接登入 Linux,既安全又方便
假設你想要用從某一台Linux的電腦登入Linux伺服器,則可以按照以下步驟做
在Linux Client產生SSH Key
首先輸入指令來產生 key
ssh-keygen
在產生Key的過程中,會詢問一些問題,對於一般的使用者而言,全部都使用預設值(直接按下 Enter 鍵)即可。
首先會詢問產生的ssh key要存放的位置
這時選擇要放的位置 預設為 /home/username/.ssh/id_rsa
使用預設值即可,直接按下 Enter 鍵。
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
接著會詢問要不要設定 passphrase
如果有設定密碼的話,以後每次使用都要輸入密碼,除你需要非常高的安全性,否則就不用設定了,直接按下 Enter 鍵即可。
安全性會比較高,依照你的需求即可
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
接下來就會產生key到指定位置了
會有兩個key 一個有副檔名 .pub 為公鑰,而沒有副檔名的為私鑰
id_rsa.pub:公開金鑰(public key),這是可以對外公開的金鑰,之後要將它放在遠端的 Linux 伺服器上作認證使用。
id_rsa:私密金鑰(private key),這是要保護好的金鑰,它等同於你的 Linux 密碼,放在自己的電腦中。
▲ 因為我之前已經有產生過key了,所以它問我要不要複寫
將公鑰設定放到Linux Server上
可以在Linux Client下使用ssh-copy-id指令的方式
將產生的 id_rsa.pub 這個公開金鑰複製到 Linux Server上的 ~/.ssh/authorized_keys 檔案中
將下面指令的USER換成自己的帳號,和把HOST換成Linux Server的IP或host
ssh-copy-id USER@HOST
它預設會將 ~/.ssh/id_rsa.pub 這個公開金鑰複製到伺服器上,若要指定使用的金鑰,可以使用 -i 參數:
ssh-copy-id -i your_key_path USER@HOST
測試
將公開金鑰放在 Linux 伺服器上之後,就可以不用打密碼登入 Linux Server了
ssh USER@HOST
如果不用輸入密碼,就代表設定成功了