一、軟體環境
作業系統:CentOS Linux release 7.4.1708 (Core)
SSH版本
[root@Geeklp201 ~]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
登入服務端IP:192.168.237.201
被登入服務端IP:192.168.237.202
192.168.237.203
二、問題背景
多台網絡可達的伺服器之間實作免密登入。本例中,以192.168.237.201為登入端,在本台機器上通過SSH免輸密碼登入遠端被登入端的192.168.237.202和192.168.237.203。
三、實作過程
1、把目前工作目錄切換到使用者目錄。
[root@Geeklp201 ~]# cd ~
2、看一下目前目錄有沒有.ssh子目錄。
[root@Geeklp201 ~]# ls -al
3、沒有.ssh子目錄,建立該目錄或者使用ssh登入一下任意一台伺服器,ssh登入時(無論登入成功與否)會自動建立該目錄。也可以直接跳過此步執行第4步,執行第四步的時候也會自動建立.ssh目錄,ssh-keygen生成的公鑰及私鑰放入該目錄下。這一步也可以說是畫蛇添足。
mkdir .ssh或者ssh
4、生成相關私鑰與公鑰。
[root@Geeklp201 ~]# ssh-keygen -b 4096 -t rsa -C [email protected]
指令執行完成之後,在目前目錄會生成id_rsa和id_rsa.pub兩個key檔案。參數b指定key的長度,本例中指定的長度為4096。參數t指定加密算法,本例中使用的RSA加密算法。參數C可是郵件位址或域名等,會被添加到key的尾部,以示區分。
5、把生成的公鑰分發到需要登入的伺服器(被登入端)上。
[root@Geeklp201 .ssh]#ssh-copy-id -i id_rsa.pub [email protected]
[root@Geeklp201 .ssh]#ssh-copy-id -i id_rsa.pub [email protected]
按照提示分别輸入被登入服務端的密碼即可。
6、登入驗證。從192.168.237.201登入192.168.237.202和192.168.237.203。
[root@Geeklp201 .ssh]# ssh [email protected]
[root@Geeklp201 .ssh]# ssh [email protected]
或者
[root@Geeklp201 .ssh]# ssh 192.168.237.202
[root@Geeklp201 .ssh]# ssh 192.168.237.203
登入成功,免密登入成功實作。
四、注意事項
1、公鑰在向被登入端分發完成後在登入端可删除,但是私鑰是不能删除的。如果删除了私鑰,那麼就需要輸入密碼才能登入成功。
2、公鑰安裝完成以後是可以解除安裝的,解除安裝指令為:ssh-keygen -R 192.168.237.203。
3、公鑰的分發過程也可以使用scp來實作,不過沒有ssh-copy-id簡單、友善,但是要注意加參數i。