先說說需求:linux
咱們平時開發、運維操做linux過程當中常常須要實現將遠程文件拷貝到本地或者本地文件拷貝到遠程;執行遠程命令等操做;這個時候創建ssh免密登陸應該是一個比較好的選擇;算法
原理shell
在linux系統中,ssh是遠程登陸的默認工具,由於該工具的協議使用了RSA/DSA的非對稱加密算法;非對稱加密算法會分別產生公鑰和私鑰;運維
如今有兩臺機器:ServerA和ServerB,ServerA須要免密登陸ServerB,咱們先在ServerA生成公鑰和私鑰,把公鑰拷貝到ServerB指定的文件下,ServerA就能夠免密登陸ServerB了;ssh
如下方法一和方法二都是使用依據上面的原理實現;工具
ssh-keygen
生成公私鑰;ssh-keygen
公私鑰 默認生成路徑
/root/.ssh
(這裏的root是用戶名,若是你是其餘用戶替換便可)測試如圖:這裏會讓你輸入密鑰的保護密碼,我這裏是一路回車(也就是不設置密鑰密碼)加密
生成的/root/.ssh
的文件:code
ssh-copy-id
將公鑰複製到ServerB中ssh-copy-id -i id_rsa.pub文件 ServerB用戶名@ServerB_Ip #示例 ssh-copy-id -i /root/.ssh/id_rsa.pub root@139.199.196.67
這個過程須要輸入ServerB對應用戶密碼。下圖添加成功。server
ok,搞定。
ServerA執行:
ssh root@ServerB_Ip date #示例 ssh root@139.199.196.67 date 獲得: Sat Jan 12 15:22:17 CST 2019 成功!
其實手工拷貝跟方法一的使用命令拷貝差很少,就是操做上原始一點;
一、生成公私鑰:同方法一的步驟1;
二、手動將步驟1中ServerA生成的/root/.ssh/id_rsa.pub
拷貝到ServerB的/root/.ssh
目錄下並重命名爲authorized_keys
三、測試:同方法一的步驟3;