1、所有机器创建用户及密码
useradd oldgirl
echo 123456|passwd --stdin oldgirl
id oldgirl
su - oldgirl
2、m01创建密钥对
ssh-keygen -t dsa 一路回车
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
3、m01分发公钥
ssh默认22端口
ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.41
更改过的ssh端口
ssh-copy-id -i .ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.31"
4、测试
ssh -p52113 oldgirl@172.16.1.31 /sbin/ifconfig eth0
ssh -p52113 oldgirl@172.16.1.41 /sbin/ifconfig eth0
ssh -p52113 oldgirl@172.16.1.8 /sbin/ifconfig eth0
成功标志!连接所有的机器,不提示密码直接可以操作。
企业里实现ssh方案:3种
1、直接root ssh key。
条件:允许root ssh登录。
2、sudo提权实现没有权限用户拷贝
配置sudoers:
echo "oldgirl ALL= NOPASSWD: /usr/bin/rsync" >>/etc/sudoers
visudo -c
scp -P52113 hosts oldgirl@172.16.1.41:~
远程sudo:ls
ssh -p52113 -t oldgirl@172.16.1.41 sudo rsync ~/hosts /etc/hosts
3、利用suid实现没有权限用户拷贝(做思维扩展了解)
172.16.1.31:
chmod u+s `which rsync`
scp -P52113 hosts oldgirl@172.16.1.31:~
ssh -p52113 oldgirl@172.16.1.31 rsync ~/hosts /etc/hosts
rsync -avz hosts -e 'ssh -p 52113' oldgirl@172.16.1.41:~
1、增量
2、加密
非交互式生成密钥及实现批量管理:
1、所有机器创建用户及密码
useradd oldgirl888
echo 123456|passwd --stdin oldgirl888
id oldgirl888
su - oldgirl888
2、m01创建密钥对
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
3、分发密钥
ssh-copy-id -i .ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.31"
#一键给多台服务器安装httpd服务:
useradd gongli
echo 123456|passwd --stdin gongli
id gongli
#2、sudo提权实现没有权限用户拷贝
#配置sudoers:
echo "gongli ALL= NOPASSWD: ALL" >>/etc/sudoers
visudo -c
su - gongli
[oldgirl@m01 ~]$ cat m.sh
ssh -p22 oldgirl@172.16.1.41 /sbin/ifconfig eth1
ssh -p22 oldgirl@172.16.1.31 /sbin/ifconfig eth1
ssh -p52113 oldgirl@172.16.1.8 /sbin/ifconfig eth1
[oldgirl@m01 ~]$ scp -P22 -rp /data oldgirl@172.16.1.31:~
[oldgirl@m01 ~]$ scp -P22 -rp /data oldgirl@172.16.1.31:~
[oldgirl@m01 ~]$ scp -P22 -rp /data oldgirl@172.16.1.31:~
#!/bin/sh
. /etc/init.d/functions
i echo "USAGE:$0 filename DST"
exit 1
fi
for n in 31 41
do
scp -P22 -rp $1 oldgirl@172.16.1.$n:~ &>/dev/null &&
ssh -p22 -t oldgirl@172.16.1.$n sudo rsync ~/$1 /$2/ &>/dev/null
if [ $? -eq 0 ];then
action "172.16.1.$n" /bin/true
else
action "172.16.1.$n" /bin/false
fi
done
[oldgirl@m01 ~]$ cat view.sh
#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 1 ];then
echo "USAGE:$0 cmd"
exit 1
fi
for n in 31 41
do
echo "------172.16.1.$n---------"
ssh -p22 -t oldgirl@172.16.1.$n $1
done
#!/bin/sh
. /etc/init.d/functions
if [ $# -ne 1 ];then
echo "USAGE:$0 cmd"
exit 1
fi
for n in 31 41
do
echo "------172.16.1.$n---------"
ssh -p22 -t oldgirl@172.16.1.$n $1
done