ssh认证类型:
基于口令的安全验证,批量管理?expect,pssh,sshpass
m01
机器(钥匙)私钥 |
被管理机器(锁)公钥 |
m01 |
nfs01 |
backup |
|
web01 |
1、在上面4台机器上面操作:创建用户及密码
useradd oldgirl
echo 123456|passwd --stdin oldgirl
id oldgirl
su - oldgirl
2、创建密钥对
在m01上面操作如下:
[oldgirl@m01 ~]$ ssh-keygen -t dsa #创建dsa类型的密钥对,一路按回车就生成了密钥对
[oldgirl@m01 ~]$ pwd
/home/oldgirl
[oldgirl@m01 ~]$ 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端口,分发方法
[oldgirl@m01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.41 #需要yes确认
[oldgirl@m01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.31 #需要yes确认
[oldgirl@m01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.8 #需要yes确认
ssh更改过的ssh端口分发方法
[oldgirl@m01 ~]$ ssh-copy-id -i .ssh/id_dsa.pub “-p 52113 oldgirl@172.16.1.41" #需要yes确认
在backup服务器查看公钥已拷贝成功:
[oldgirl@backup ~]$ pwd
/home/oldgirl
[oldgirl@backup ~]$ ll .ssh/
total 4
-rw------- 1 oldgirl oldgirl 601 Aug 15 21:03 authorized_keys
测试:成功标志如下在m01机器上面操作:批量查询,不用输入密码就说明已经成功了。
[oldgirl@m01 ~]$ whoami
oldgirl
[oldgirl@m01 ~]$ pwd
/home/oldgirl
[oldgirl@m01 ~]$ mkdir scripts
[oldgirl@m01 ~]$ cd scripts/
[oldgirl@m01 scripts]$ vi view_ip.sh
ssh oldgirl@172.16.1.31 /sbin/ifconfig eth0
ssh oldgirl@172.16.1.41 /sbin/ifconfig eth0
ssh oldgirl@172.16.1.8 /sbin/ifconfig eth0
企业里实现ssh方案:3种
1、直接root权限(条件允许root ssh登录)
2、sudo提权实现密钥权限的用户拷贝
在nfs服务器上面:visudo尾部添加如下权限:
在nfs服务上面操作
1
2
3
|
[root@nfs01 oldgirl]
# echo "oldgirl ALL= NOPASSWD:/usr/bin/rsync" >>/etc/sudoers #赋予oldgirl rsync权限。
[root@nfs01 oldgirl]
# visudo -c #检查语法是否错误
/etc/sudoers
: parsed OK
|
1
2
3
4
5
6
7
8
|
然后在m01机器上面操作
[oldgirl@m01 ~]$
scp
~
/hosts
oldgirl@172.16.1.31:~
##先把家目录下hosts模板拷贝到31机器的oldgirl的家目录下。
[oldgirl@m01 ~]$
ssh
-p22 -t
sudo
rsync
~
/hosts
/etc/hosts
##远程到31机器上面,用rsync 提权把家目录的hosts文件替换到/etc/hosts
还可以用脚本批量分发实现:fenfa.sh脚本,然后sh fenfa.sh或者
bash
fenfa.sh
[oldgirl@m01 ~]$
cat
fenfa.sh
scp
-P22 ~hosts oldgirl@172.16.1.31:~
ssh
-p22 -t oldgirl@172.16.1.31
sudo
rsync
~
/hosts
/etc/hosts
|
还可以用rsync增量,加密传输:
rsync -avz hosts -e "ssh -p 52113" oldgirl@172.16.1.41:~
1、增量 (scp是全量,rsync是增量)
2、加密(scp和rsync都是加密)
3、利用suid来实现拷贝(思维拓展了解)
先在nfs上面用root登录给予rsync命令的文件赋予属主s权限。
[oldgirl@nfs01 ~]$ su - root
Password:
[root@nfs01 ~]# which rsync
/usr/bin/rsync
[root@nfs01 ~]# ll `which rsync`
-rwxr-xr-x 1 root root 414968 Apr 30 2014 /usr/bin/rsync
[root@nfs01 ~]# chmod u+s /usr/bin/rsync
[root@nfs01 ~]# ll `which rsync`
-rwsr-xr-x 1 root root 414968 Apr 30 2014 /usr/bin/rsync
1
2
3
|
然后在m01机器上面操作
[oldgirl@m01 ~]$
scp
~
/hosts
:~
##先把家目录下hosts模板拷贝到31机器的oldgirl的家目录下。
[oldgirl@m01 ~]$
ssh
oldgirl@172.16.1.31
rsync
~
/hosts
/etc/hosts
##远程到31机器上面,用rsync把家目录的hosts文件替换到/etc/hosts
本文转自sandshell博客51CTO博客,原文链接http://blog.51cto.com/sandshell/1956607如需转载请自行联系原作者 sandshell
|