環境:有兩臺已經安裝了ssh客戶端的Linux機器:
172.17.0.1(機器名爲linux1)
172.17.0.2(機器名爲linux2)。
兩臺機器都有/root/.ssh目錄(這個目錄是第一次遠程登錄其他主機時生成的)。
現在要求1的機器無需密碼登錄2的機器。
步驟如下:
(一)在本機生成公鑰和私鑰
[root@linux1~]# cd .ssh [root@linux1 .ssh]# rm -f * (清除.ssh目錄下所有的舊文件) [root@linux1 .ssh]# ssh-keygen
過程中出現三個需要輸入的地方直接按回車鍵。
此時在.ssh目錄下生成了id_rsa和id_rsa.pub。其中id_rsa是私鑰,本機要用;id_rsa.pub是公鑰,給其他的機器用。
(二)將公鑰上傳到遠程主機上
[root@linux1 .ssh]# scp id_rsa.pub [email protected]:/root/.ssh 按照提示輸入遠程主機(172.17.0.2)的密碼後,可看到上傳成功的提示: id_rsa.pub 100% 398 0.4KB/s 00:00
(三)登錄遠程主機,將客戶端公鑰寫入authorized_keys文件
[root@linux1 .ssh]# ssh 172.17.0.2 Warning: Permanently added '172.17.0.2' (RSA) to the list of known hosts. [email protected]'s password: Last login: Tue Apr 29 21:09:27 2017 from 192.168.0.56 [root@linux2 ~]#cd .ssh [root@linux2 .ssh]# cat id_rsa.pub >> authorized_keys
此時可在2機器的.ssh目錄下看到兩個文件authorized_keys和id_rsa.pub。其中id_rsa.pub的主要目的就是把公鑰信息寫到authorized_keys中。然後把兩臺主機中的id_rsa.pub都刪除掉,否則這臺機器將無法不用密碼登錄別的機器。
(四)退出遠程主機,重新登錄遠程主機
[root@linux1 .ssh]# ssh 172.17.0.2
此時發現在1機器上不需要密碼就可以登錄遠程機器2,且在1的機器上的.ssh中保留了兩個文件:id_rsa和known_hosts,在2的機器上的.ssh中保留了一個文件:authorized_keys。
(五)若要實現兩臺linux主機之間的無密碼登錄,只需把上述的兩臺主機對調一下再操作一遍即可。
還有另外一種方法:
[root@linux1~]# ssh-keygen -t rsa [root@linux1~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected]