Linux ssh+key(創建密鑰公鑰)

架構部署(ssh+key)

假設管理服務器的外網地址為10.0.0.61內網為172.16.1.61

  • 在管理服務器上創建密鑰對

方案①:利用交互的模式創建密鑰對

#ssh-keygen -t dsa

Linux ssh+key(創建密鑰公鑰)

密鑰(鑰匙)公鑰(鎖頭)

方案②: 利用免交互模式創建秘鑰對

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 密碼設置為空,實際要設置密碼

Linux ssh+key(創建密鑰公鑰)

ssh-keygen -t dsa -f "/root/.ssh/id dsa" -N ”XX“

加上 -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

Linux ssh+key(創建密鑰公鑰)

如圖管理服務器創建密鑰對

# ssh-keygen -t dsa -f "/root/.ssh/id_dsa" -N "" -q ——創建一個密鑰對密碼為空

# ssh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.41 ——把公鑰(鎖頭)發給被管理端

Linux ssh+key(創建密鑰公鑰)

首次連接需要基於口令連接如圖提示

如上圖口令連接完成後輸入#ssh 172.16.1.41可直接連接無需輸入密碼

Linux ssh+key(創建密鑰公鑰)

可以不用登陸主機,利用命令查看遠程主機信息

可以在backup服務器端測試執行看是否與上匹配

Linux ssh+key(創建密鑰公鑰)

證明是ssh可以利用密鑰對的建立直接來查看遠端主機的信息

  • 利用免交互方式分發秘鑰對

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.

Linux ssh+key(創建密鑰公鑰)

ssh -o StrictHostKeyChecking=no

#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

Linux ssh+key(創建密鑰公鑰)

批量密鑰分發檢查腳本

謝謝大家支持——ke.ke


分享到:


相關文章: