設置 SSH免密登錄

1、說明:

1.1、known_hosts是什麼?

ssh會把你每個你訪問過計算機的公鑰(public key)都記錄在~/.ssh/known_hosts。當下次訪問相同計算機時,OpenSSH會覈對公鑰。如果公鑰不同,OpenSSH會發出警告, 避免你受到DNS Hijack之類的攻擊。

可能出現問題的原因:一臺主機上有多個Linux系統,會經常切換,那麼這些系統使用同一ip,登錄過一次後就會把ssh信息記錄在本地的~/.ssh/known_hsots文件中,切換該系統後再用ssh訪問這臺主機就會出現衝突警告,需要手動刪除修改known_hsots裏面的內容。 

有以下兩個解決方案: 
1. 手動刪除修改known_hsots裏面的內容; 
2. 修改配置文件“~/.ssh/config”,加上這兩行,重啓服務器。 
   StrictHostKeyChecking no 
   UserKnownHostsFile /dev/null 

優缺點: 
1. 需要每次手動刪除文件內容,一些自動化腳本的無法運行(在SSH登陸時失敗),但是安全性高; 
2. SSH登陸時會忽略known_hsots的訪問,但是安全性低;

 

 

2. 製作密鑰對

首先在服務器上製作密鑰對。首先用密碼登錄到你打算使用密鑰登錄的賬戶,然後執行以下命令:

[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 爲公鑰。

3. 在服務器上安裝公鑰

鍵入以下命令,在服務器上安裝公鑰:

[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

4. 設置 SSH,打開密鑰登錄功能

編輯 /etc/ssh/sshd_config 文件,進行如下設置:

RSAAuthentication yes
PubkeyAuthentication yes

另外,請留意 root 用戶能否通過 SSH 登錄:

PermitRootLogin yes

當你完成全部設置,並以密鑰方式登錄成功後,再禁用密碼登錄:

PasswordAuthentication no

最後,重啓 SSH 服務:

[root@host .ssh]$ service sshd restart

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章