鉤子:
爲了避免Ansible下發指令時輸入目標主機密碼,通過證書籤名達到SSH無密碼是一個好的方案,推薦使用ssh-keygen與ssh- copy-id(scp)來實現快速證書的生成和公鑰下發,其中ssh-keygen生成一對密鑰,使用ssh-copy-id(scp)來下發生成的公鑰。下面以A服務器與B服務器雙向實現免密碼登錄和拷貝文件爲例,介紹相關的配置。
A服務器地址:192.168.33.44,下面簡稱A
(主控端)
B服務器地址:192.168.33.55,下面簡稱B(被控端)
由於是用Vagrant做測試,所以以下都是在用戶vagrant下做測試:
1. 在A生成密鑰對
ssh-keygen -t rsa -P ''
在當前登錄用戶的home目錄下的.ssh目錄下生成id_rsa和id_rsa.pub兩個文件,分別代表密鑰對的私鑰和公鑰。
2.拷貝A的公鑰(id_rsa.pub)到B
這裏拷貝到B的vagrant用戶.ssh目錄下爲例:
scp /home/vagrant/.ssh/id_rsa.pub:~/.ssh/id_rsa.pub.44v [email protected]
3. 登錄B
拷貝A的id_rsa.pub內容到.ssh目錄下的authorized_keys文件中
cat id_rsa.pub.44v >> authorized_keys (更暴力的處理方法是: cat id_rsa* >> authorized_keys)
4. 此時在A中用SSH登錄B或向B拷貝文件,將不需要密碼
ssh [email protected]
scp abc.txt [email protected]:/home
由於本地用戶名vagrant與遠程用戶名vagrant一致,登錄時可以省略用戶名:
ssh host