首先,假設我們有兩台服務器,服務器名稱分別是 master 和 slave1,我們現在需要做的就是在服務器 master 上面登錄 服務器 slave1 不需要輸入密碼就可以登錄成功,如下圖所示。
下面開始我們的配置步驟
1、服務器 master 上生成密鑰
可以通過使用 ssh-keygen 命令來生成,我們可以先使用 man 命令或者是 help 命令查看具體需要哪些參數以及具體信息。
通過執行命令 ssh-keygen -t rsa 來生成我們需要的密鑰。
執行上面的命令時,我們直接按三次回車,之后會在用戶的根目錄下生成一個 .ssh 的文件夾,我們進入該文件夾下面並查看有哪些內容。
我們看到有四個文件,下面分別解釋下每個文件是干什么用的。
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
方式二,通過 scp 命令直接將該文件遠程復制過去,使用這種方式需要注意,如果你之前已經配置了其它服務器上的密鑰,這是使用這種方法,就會覆蓋掉你原來的密鑰,這時候是不建議使用這種方式的,如果你是先將該文件復制到服務器上的一個目錄下,然后在使用追加的方式,將密鑰追加到 authorized_keys 也是完全 OK 的。如果你只有兩台服務器也是可以直接復制到文件。
scp -p ~/.ssh/id_rsa.pub root@<ip>:/root/.ssh/authorized_keys
方式三,通過手工復制。將本地 id_rsa.pub 文件的內容拷貝至遠程服務器的 ~/.ssh/authorized_keys 文件中也完全可以的。先使用 cat 命令查看當前的公鑰,然后復制,在到目標服務器上去粘貼。
以上步驟,我們就完成了免密鑰登錄,下面我們來進行驗證。
到此,我們的 ssh 免密鑰登錄就大功告成。下面給大家說說免密鑰登錄的原理,有興趣的可以看看。
首先來看下原理圖
1、ssh 客戶端向 ssh 服務器端發送連接請求
2、ssh 服務器端發送一個隨機的信息
3、ssh 客戶端使用本地的私鑰對服務器端發送過來的信息進行加密
4、ssh 客戶端向服務器端發送加密過后的信息
5、ssh 服務器端使用公鑰對該信息進行解密
6、若解密之后的信息和之前發送的信息匹配,則信任客戶端,否則不信任。
PS:如果覺得文章不錯的話,還請大家點贊分享下,算是對我的最大支持。