目的:
期望A服務器在對B服務器執行ssh或者scp等命令的時候不需要輸入密碼
實現方法:
1.通過安裝sshpass服務
2.通過密鑰驗證的方式
操作過程:
一、通過sshpass的方式達到密碼非交互
1.安裝sshpass服務(centeros 7上可直接yum安裝,而centeros 6必須下載文件編譯安裝)
yum install sshpass
2.使用sshpass命令登陸遠程服務器
sshpass -p '密碼' ssh root@192.168.0.1
sshpass -p '密碼' scp 1.txt root@192.168.0.1:/root
二、通過密鑰認證方式達到免交互免密碼認證
1.通過ssh-keygen命令生成公鑰
ssh-keygen -t rsa
2.在/root/.ssh/目錄下會生成一個'id_isa.pub'的文件,將其拷貝到目標主機
scp /root/.ssh/id_isa.pub root@192.168.0.1:/root
或者直接使用ssh-copy-id命令去復制公鑰自動寫入到authorized_keys文件中,這樣就不需要接下來的手動復制公鑰操作了
ssh-copy-id -i /root/.ssh/id_isa.pub root@192.168.0.1
3.將id_isa.pub里面的內容重定向到目標主機的/root/.ssh/authorized_keys文件中(如果沒有.ssh目錄和authorized_keys文件,需要自己手動創建)
cat id_isa.pub >> /root/.ssh/authorized_keys
注意:authorized_keys權限一定要為600
4.此時再登陸目標主機發現不需要輸入密碼
sshpass方式與公鑰認證對比:
做過這個小實驗就不難發現,sshpass命令中附帶了明文密碼,這時候如果用戶權限管控不到位、或者在使用ps命令發現sshpass這個進程的時候都可以看到遠程主機的密碼,所以不建議這種方式,極力推薦ssh的密鑰認證。