架構部署(ssh+key)
假設管理服務器的外網地址為10.0.0.61內網為172.16.1.61
- 在管理服務器上創建密鑰對
方案①:利用交互的模式創建密鑰對
#ssh-keygen -t dsa
方案②: 利用免交互模式創建秘鑰對
a 交互方式位置:需要確認私鑰文件保存路徑
-f filename Specifies the filename of the key file.
-f "/root/.ssh/id_dsa"
b 交互方式位置:需要進行私鑰文件加密確認
-N new_passphrase Provides the new passphrase
-P passphrase Provides the (old) passphrase
實例:
#ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N ""
這裡 -t為type 秘鑰類型 -f私鑰文件保存路徑 -N 密碼設置為空,實際要設置密碼
加上 -q 取消默認輸出 放在腳本里使用
#ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "XX" -q
在管理服務器上分發公鑰給被管理端服務器
- 利用交互方式分發密鑰對
#man ssh-copy-id
ssh-copy-id [-i [identity_file]] [user@]machine
[user@]可不寫 默認使用當前登錄用戶分發。-i 公鑰文件路徑
命令格式:
#ssh-copy-id -i /root/.ssh/id_dsa.pub [email protected]
#ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
#ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.8
# ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "" -q ——創建一個密鑰對密碼為空
# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.41 ——把公鑰(鎖頭)發給被管理端
如上圖口令連接完成後輸入#ssh 172.16.1.41可直接連接無需輸入密碼
可以在backup服務器端測試執行看是否與上匹配
- 利用免交互方式分發秘鑰對
a 第一次遠程連接有yes/no的確認
ssh -o StrictHostKeyChecking=no --- 取消熱鍵檢查功能,不讓用戶進行確認操作
[root@m01>
Warning: Permanently added '[172.16.1.8]:52113' (RSA) to the list of known hosts.
b 第一次遠程連接需要基於口令認證
sshpass -p 123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.8 -p52113 -o StrictHostKeyChecking=no"
Now try logging into the machine, with "ssh '172.16.1.8 -p52113 -o StrictHostKeyChecking=no'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
#ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.7 -o StricHostKeyChecking=no"
如何實現公鑰批量分發,秘鑰對自動生成
- 編寫腳本實現公鑰批量分發
#!/bin/bash
# var info
Password_info=123456
Server_Port=52113
# create key pair
rm /root/.ssh/id_dsa* -f
ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "" -q
# push public key to client server
for ip in 7 31 41
do
sshpass -p $Password_info ssh-copy-id -i /root/.ssh/id_dsa.pub "172.16.1.$ip -p$Server_Port -o StrictHostKeyChecking=no"
done
說明:分發的公鑰基於兩方面:基於IP地址分發 基於用戶信息分發
- 編寫批量檢查腳本
#!/bin/bash
# var info
Password_info=123456
Server_Port=22
Cmd_info=$1
# push public key to client server
for ip in 7 31 41
do
echo "================= host 172.16.1.$ip check_info ================="
ssh -p$Server_Port 172.16.1.$ip $Cmd_info
echo ""
done
謝謝大家支持——ke.ke
關鍵字: ssh-copy-id ssh-keygen dsa