ssh key密鑰認證實現批量分發、管理、部署
在實際生產環境中,如果需要批量管理和部署服務器,可以采用ssh+key秘鑰認證,然後可以免密碼進行數據分發,服務部署及管理。
SSH服務(TCP端口號22):安全的命令解釋器
為客戶機提供安全的Shell 環境,用於遠程管理
SSH基於公鑰加密(非對稱加密)技術: 數據加密傳輸; 客戶端和服務器的身份驗證;
公鑰 和 私鑰 是成對生成的,這兩個密鑰互不相同,兩個密鑰可以互相加密和解密;不能根據一個密鑰而推算出另外一個密鑰;
公鑰對外公開,私鑰只有私鑰的持有人才知道。
ssh批量分發
首先需要創建公鑰私鑰,然後將公鑰放到client端,私鑰留在分發端。
公鑰相當於鎖,私鑰相當於鑰匙。
我這裏是采用普通用戶,root用戶認證不建議,存在安全隱患。
ssh-keygen -t dsa
[[email protected] .ssh]# ll
total 8
-rw------- 1 tuwei tuwei 668 Apr 27 13:57 id_dsa
-rw-r--r-- 1 tuwei tuwei 608 Apr 27 13:57 id_dsa.pub
然後將公鑰拷貝到其他client端。
ssh-copy-id -i id_dsa.pub [email protected]:~拷貝到遠端的家目錄
[[email protected] .ssh]$ ll
total 4
-rw-------. 1 tuwei tuwei 1216 Apr 30 01:49 authorized_keys
註意:采用ssh-copy-id腳本將公鑰拷貝到遠端,在遠端會生成一個.ssh目錄(目錄權限為700)。文件權限為600,不能作更改。
做好分發後進行測試,通過ssh連接到遠端
[[email protected] ~]$ ssh [email protected]
Last login: Mon May 8 10:28:31 2017 from 192.168.1.10
Hi,welcome to the linux learning class
keep on learning
查看遠端ip
[[email protected] ~]$ ssh [email protected]
eth0 Link encap:Ethernet HWaddr 00:0C:29:41:0C:21
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe41:c21/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16454 errors:0 dropped:0 overruns:0 frame:0
TX packets:15218 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1378538 (1.3 MiB) TX bytes:10704201 (10.2 MiB)
分發數據
數據分發時需要用到scp、rsync命令,而普通用戶沒有root權限,可以將普通用戶加上sudo,實現root操作。
echo “tuwei ALL=(ALL) NOPASSWD:/usr/bin/scp,/usr/bin/rsync,/bin/tar” >>/etc/sudoers
實際生產中可以將要分發數據權限改為普通用戶。
chown -R tuwei /tuwei
1. scp -P22 -r -p /tuwei [email protected]:~
2. ssh -t [email protected] sudo rsync -azP tuwei /etc
普通用戶對/etc是沒有可寫權限的,這裏采用兩步完成分發.可以寫個通用腳本進行批量管理。
#!/bin/sh
#write by tuwei at 20170501
################get the information of other nodes
PNAME=`basename $0`
print_usage() {
echo "Usage:"
echo "/bin/sh $PNAME command"
exit 1
}
#$1 ip
if [ $# -ne 1 ]; then
print_usage
fi
for ip in `cat all_client_ips.txt|grep -v ^#`
do
echo "start ip $ip $1 --------------------------"
ssh -p 22 tuwei@$ip $1 #########如果是分發,scp -P22 -r -p $1 tuwei@$ip:~
echo "end $ip $1 -------------------------------"
printf "\n"
done
本文出自 “學不思則惘 思不學則殆” 博客,請務必保留此出處http://tuwei.blog.51cto.com/11040555/1923537
ssh key密鑰認證實現批量分發、管理、部署