2025-04-26
使用 SSH Key 登入伺服器

使用 SSH Key 登入伺服器

Dec 12, 2022

使用ssh登入遠端主機時,一般是使用密碼進行驗證,雖然不算太麻煩,但每次連接都要輸入一次,久而久之其實也是耗費了不少時間。而本文介紹使用ssh key進行驗證的方法,可以省去每次輸入密碼的麻煩。

首先產生一組private, public ssh key。輸入:

1
ssh-keygen

它會問你要放在哪裡,預設是 ~/.ssh/id_rsa,如果你沒有要改就按enter繼續。
接著會問你是否要使用passphrase,如果你輸入的話,他會幫你把key用這組passphrase進行加密,之後每次使用時都需要輸入passphrase。如果你不想設定passphrase,就不要輸入任何東西,直接按enter即可。

接著就會在 ~/.ssh 資料夾中,出現兩個新的檔案 id_rsa 以及 id_rsa.pubid_rsa是私鑰,只需要存在你的電腦上面;而id_rsa.pub 是公鑰,需要放到你要登入的那台伺服器上面。

將公鑰放到伺服器上面的指令為:

1
ssh-copy-id -i .ssh/id_rsa.pub user@host_name

如果你的ssh要走別的port的話,可以改成這樣:

1
ssh-copy-id -i .ssh/id_rsa.pub -p 2222 user@host_name

接著嘗試使用ssh連接主機,這時應該就可以不用輸入密碼了。

最後再順便介紹一下,ssh key怎麼搭配ssh config使用。ssh config可以讓你用檔案的方式來設定ssh連線資訊,你可以設定一個名稱,之後連線時就只需要輸入這組名稱即可登入伺服器。

~/.ssh 目錄下,建立一個名叫 config 的檔案,並在裡面寫入:

1
2
3
4
5
Host host_name # 這個可以設定自己喜歡的名字
HostName xxx.xxx.xxx.xxx # 這裡輸入伺服器ip或是domain name
Port 2222 # 如果你的伺服器不是把ssh服務開在預設的port 22的話,可以在這裡設定
User user_name
identityfile /path/to/.ssh/id_rsa

之後每次透過ssh連接至伺服器時,只需要輸入:

1
ssh host_name

這樣就可以連上主機了。

參考文章:
[教學] 產生SSH Key並且透過KEY進行免密碼登入
https://chusiang.gitbooks.io/working-on-gnu-linux/content/20.ssh_config.html

本文由 [Ping Yang] 撰寫

閱讀本文