1. 程式人生 > 實用技巧 >設定SSH Key免密碼登陸伺服器

設定SSH Key免密碼登陸伺服器

  今天拿了一個新的伺服器,平時都是用ssh key連結到git倉庫。我就突發奇想,既然兩者都是通過ssh連結,那麼能不能通過ssh key免密碼登陸伺服器呢。沒想到去網上搜一下還真可以。感謝菜鳥教程救我狗命。

    金鑰形式登入的原理是:利用金鑰生成器製作一對金鑰——一隻公鑰和一隻私鑰。將公鑰新增到伺服器的某個賬戶上,然後在客戶端利用私鑰即可完成認證並登入。這樣一來,沒有私鑰,任何人都無法通過 SSH 暴力破解你的密碼來遠端登入到系統。此外,如果將公鑰複製到其他賬戶甚至主機,利用私鑰也可以登入。

下面來講解如何在 Linux 伺服器上製作金鑰對,將公鑰新增給賬戶,設定 SSH,最後通過客戶端登入。

1. 製作金鑰對(本機)

首先在伺服器上製作金鑰對。首先用密碼登入到你打算使用金鑰登入的賬戶,然後執行以下命令:(如果做過為git倉庫建立ssh key就跳過這條)

[root@host ~]$ ssh-keygen  <== 建立金鑰對
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): <== 按 Enter
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): <== 輸入金鑰鎖碼,或直接按 Enter 留空
Enter same passphrase again: 
<== 再輸入一遍金鑰鎖碼 Your identification has been saved in /root/.ssh/id_rsa. <== 私鑰 Your public key has been saved in /root/.ssh/id_rsa.pub. <== 公鑰 The key fingerprint is: 0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 root@host

金鑰鎖碼在使用私鑰時必須輸入,這樣就可以保護私鑰不被盜用。當然,也可以留空,實現無密碼登入。

現在,在 root 使用者的家目錄中生成了一個 .ssh 的隱藏目錄,內含兩個金鑰檔案。id_rsa 為私鑰,id_rsa.pub 為公鑰。

2. 在伺服器上安裝公鑰

鍵入以下命令,在伺服器上安裝公鑰:(注意這是在個人資料夾下

[root@host ~]$ cd .ssh
[root@host .ssh]$ cat id_rsa.pub >> authorized_keys

如此便完成了公鑰的安裝。為了確保連線成功,請保證以下檔案許可權正確:

[root@host .ssh]$ chmod 600 authorized_keys
[root@host .ssh]$ chmod 700 ~/.ssh

3. 設定 SSH,開啟金鑰登入功能

編輯 /etc/ssh/sshd_config 檔案,進行如下設定:(我只有第一個有,可能是伺服器系統不同導致的)

RSAAuthentication yes
PubkeyAuthentication yes

最後,重啟 SSH 服務:

[root@host .ssh]$ service sshd restart