ssh批量管理分发项目实战介绍与实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ssh批量管理分发项目实战介绍与实践相关的知识,希望对你有一定的参考价值。

ssh认证类型:

基于口令的安全验证,批量管理?expect,pssh,sshpass

m01

机器(钥匙)私钥
被管理机器(锁)公钥
     m01
nfs01
backup
web01

1、在上面4台机器上面操作:创建用户及密码

useradd oldgirl

echo 123456|passwd --stdin oldgirl

id oldgirl

su - oldgirl

2、创建密钥对

在m01上面操作如下:

[[email protected] ~]$ ssh-keygen -t dsa #创建dsa类型的密钥对,一路按回车就生成了密钥对

[[email protected] ~]$ pwd
/home/oldgirl
[[email protected] ~]$ ll .ssh/
total 8
-rw------- 1 oldgirl oldgirl 668 Aug 15 20:49 id_dsa  #钥匙
-rw-r--r-- 1 oldgirl oldgirl 601 Aug 15 20:49 id_dsa.pub  #锁

分发密钥:

ssh默认22端口,分发方法

[[email protected] ~]$ ssh-copy-id -i .ssh/id_dsa.pub [email protected] #需要yes确认

[[email protected] ~]$ ssh-copy-id -i .ssh/id_dsa.pub [email protected] #需要yes确认

[[email protected] ~]$ ssh-copy-id -i .ssh/id_dsa.pub [email protected] #需要yes确认

ssh更改过的ssh端口分发方法

[[email protected] ~]$ ssh-copy-id -i .ssh/id_dsa.pub “-p 52113 [email protected]" #需要yes确认

在backup服务器查看公钥已拷贝成功:

[[email protected] ~]$ pwd
/home/oldgirl
[[email protected] ~]$ ll .ssh/
total 4
-rw------- 1 oldgirl oldgirl 601 Aug 15 21:03 authorized_keys

测试:成功标志如下在m01机器上面操作:批量查询,不用输入密码就说明已经成功了。

[[email protected] ~]$ whoami
oldgirl
[[email protected] ~]$ pwd
/home/oldgirl
[[email protected] ~]$ mkdir scripts
[[email protected] ~]$ cd scripts/
[[email protected] scripts]$ vi view_ip.sh
ssh [email protected] /sbin/ifconfig eth0
ssh [email protected] /sbin/ifconfig eth0
ssh [email protected] /sbin/ifconfig eth0


技术分享


企业里实现ssh方案:3种

1、直接root权限(条件允许root ssh登录)

2、sudo提权实现密钥权限的用户拷贝

在nfs服务器上面:visudo尾部添加如下权限:

在nfs服务上面操作

[[email protected] oldgirl]# echo "oldgirl ALL= NOPASSWD:/usr/bin/rsync" >>/etc/sudoers #赋予oldgirl rsync权限。
[[email protected] oldgirl]# visudo -c #检查语法是否错误
/etc/sudoers: parsed OK


然后在m01机器上面操作
[[email protected] ~]$ scp ~/hosts [email protected]:~  ##先把家目录下hosts模板拷贝到31机器的oldgirl的家目录下。
[[email protected] ~]$ ssh  sudo rsync ~/hosts /etc/hosts ##远程到31机器上面,用rsync 提权把家目录的hosts文件替换到/etc/hosts

还可以用脚本批量分发实现:fenfa.sh脚本,然后sh fenfa.sh或者bash fenfa.sh
[[email protected] ~]$ cat fenfa.sh 
scp -P22 ~hosts [email protected]:~
ssh -p22 -t [email protected] sudo rsync ~/hosts /etc/hosts

还可以用rsync增量,加密传输:

rsync -avz hosts -e "ssh -p 52113" [email protected]:~

1、增量 (scp是全量,rsync是增量)

2、加密(scp和rsync都是加密)


3、利用suid来实现拷贝(思维拓展了解)

先在nfs上面用root登录给予rsync命令的文件赋予属主s权限。

[[email protected] ~]$ su - root
Password:
[[email protected] ~]# which rsync
/usr/bin/rsync
[[email protected] ~]# ll `which rsync`
-rwxr-xr-x 1 root root 414968 Apr 30  2014 /usr/bin/rsync
[[email protected] ~]# chmod u+s /usr/bin/rsync
[[email protected] ~]# ll `which rsync`
-rwsr-xr-x 1 root root 414968 Apr 30  2014 /usr/bin/rsync

然后在m01机器上面操作
[[email protected] ~]$ scp ~/hosts :~  ##先把家目录下hosts模板拷贝到31机器的oldgirl的家目录下。
[[email protected] ~]$ ssh [email protected] rsync ~/hosts /etc/hosts ##远程到31机器上面,用rsync把家目录的hosts文件替换到/etc/hosts


本文出自 “sandshell” 博客,请务必保留此出处http://sandshell.blog.51cto.com/9055959/1956607

以上是关于ssh批量管理分发项目实战介绍与实践的主要内容,如果未能解决你的问题,请参考以下文章

SSH批量分发与管理

(转)SSH批量分发管理&非交互式expect

企业实战脚本案例3:批量管理自动化运维100台小规模服务器

SSH批量分发管理

Linux使用ssh公钥实现免批量分发管理服务器

ssh实现多级免密码验证企业分发管理