天天看點

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

作者:玩轉Linux與MySQL

參考文檔:

使用ssh相關指令配置免密時,由于沒加-p參數導緻的誤會

Linux腳本篇:主機互相免密登陸配置腳本

背景:

在實際工作中,可能遇到有生成密鑰的指令ssh-keygen,而沒有拷貝密鑰的指令ssh-copy-id,這情況怎麼辦?重裝sshd服務?生産環境不敢輕易這樣操作;單獨安裝ssh-copy-id?我沒做過這種操作,不過可以試試從其他主機直接拷貝ssh-copy-id指令是否可行。

其實,如下的方法比較簡單可行:

上述參考文檔中的ssh-copy-id指令實際是把公鑰拷貝到目标主機,進而實作目标主機可以免密登入,這個拷貝動作完全可以手動代替---複制粘貼。

操作步驟:

檢視配置免密前的root使用者家目錄内容:無免密相關檔案目錄.ssh

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

在3台主機分别執行生成密鑰指令:

[root@localhost ~]# ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

執行ssh-keygen指令後,在root使用者家目錄生成了隐藏目錄.ssh,在這個目錄下生成了私鑰檔案id_rsa和公鑰檔案id_rsa.pub

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

私鑰檔案無需關注,我們檢視下公鑰檔案id_rsa.pub内容:

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

在這3台主機中選擇任意1台主機(我選擇131這台)中建立一個檔案authorized_keys,把這3台主機的公鑰都拷貝到這個檔案中,并授予權限600

[root@localhost ~]# vi .ssh/authorized_keys

[root@localhost ~]# chmod 600 .ssh/authorized_keys

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

把這個檔案authorized_keys放到另外的2台主機中的/root/.ssh目錄下:

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

測試登入:任意之間的2台主機可以免密登入

Linux:通過手動複制粘貼公鑰代替ssh-copy-id實作免密

注意:

如果按照上述方法操作後,沒有實作免密,請檢查下公鑰拷貝過程中是否多了空格或者各個機器的ssh端口是否是22,如果不是22,則用ssh測試免密登入時加上-p 參數指定端口

繼續閱讀