SSH配置—Linux下實現免密碼登入

dotzhang發表於2018-05-17

enter image description here 首先,假設我們有兩臺伺服器,伺服器名稱分別是 master 和 slave1,我們現在需要做的就是在伺服器 master 上面登入 伺服器 slave1 不需要輸入密碼就可以登入成功,如下圖所示。

enter image description here

下面開始我們的配置步驟

1、伺服器 master 上生成金鑰

可以通過使用 ssh-keygen 命令來生成,我們可以先使用 man 命令或者是 help 命令檢視具體需要哪些引數以及具體資訊。 enter image description here

通過執行命令 ssh-keygen -t rsa 來生成我們需要的金鑰。

enter image description here

執行上面的命令時,我們直接按三次回車,之後會在使用者的根目錄下生成一個 .ssh 的資料夾,我們進入該資料夾下面並檢視有哪些內容。

enter image description here

我們看到有四個檔案,下面分別解釋下每個檔案是幹什麼用的。

authorized_keys: 存放遠端免密登入的公鑰,主要通過這個檔案記錄多臺機器的公鑰。

id_rsa: 生成的私鑰檔案

id_rsa.pub: 生成的公鑰檔案

known_hosts: 已知的主機公鑰清單

2、遠端金鑰登入

這裡介紹最常用的三種方式,一是通過 ssh-copy-id 命令,二是通過 scp 命令,三是手工複製。

方式一,通過 ssh-copy-id 命令設定。最後一個引數是我們要免金鑰登入的伺服器 ip 地址。

ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.1.100 enter image description here

方式二,通過 scp 命令直接將該檔案遠端複製過去,使用這種方式需要注意,如果你之前已經配置了其它伺服器上的金鑰,這是使用這種方法,就會覆蓋掉你原來的金鑰,這時候是不建議使用這種方式的,如果你是先將該檔案複製到伺服器上的一個目錄下,然後在使用追加的方式,將金鑰追加到 authorized_keys 也是完全 OK 的。如果你只有兩臺伺服器也是可以直接複製到檔案。

scp -p ~/.ssh/id_rsa.pub root@:/root/.ssh/authorized_keys

enter image description here

方式三,通過手工複製。將本地 id_rsa.pub 檔案的內容拷貝至遠端伺服器的 ~/.ssh/authorized_keys 檔案中也完全可以的。先使用 cat 命令檢視當前的公鑰,然後複製,在到目標伺服器上去貼上。

enter image description here

以上步驟,我們就完成了免金鑰登入,下面我們來進行驗證。

enter image description here

到此,我們的 ssh 免金鑰登入就大功告成。下面給大家說說免金鑰登入的原理,有興趣的可以看看。

首先來看下原理圖

enter image description here

1、ssh 客戶端向 ssh 伺服器端傳送連線請求

2、ssh 伺服器端傳送一個隨機的資訊

3、ssh 客戶端使用本地的私鑰對伺服器端傳送過來的資訊進行加密

4、ssh 客戶端向伺服器端傳送加密過後的資訊

5、ssh 伺服器端使用公鑰對該資訊進行解密

6、若解密之後的資訊和之前傳送的資訊匹配,則信任客戶端,否則不信任。

PS:如果覺得文章不錯的話,還請大家點贊分享下,算是對我的最大支援。 enter image description here

相關文章