[ssh 无密码访问]linux ssh公匙密匙无密码访问
作者:flymaster
qq:908601287
blog:http://www.cnblogs.com/flymaster500/
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
作者:flymaster
qq:908601287
blog:http://www.cnblogs.com/flymaster500/
2. ssh无密码访问
SSH-KeyGen 的用法
假设 A 为客户机器,B为目标机; 要达到的目的:
A机器ssh登录B机器无需输入密码; 加密方式选 rsa|dsa均可以,默认dsa 做法:
1、登录A机器
2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;
ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.
具体方法如下:
ssh-keygen -t rsa 然后全部回车,采用默认值. 这样生成了一对密钥,存放在用户目录的~/.ssh下。
将公钥考到对方机器的用户目录下,并拷到~/.ssh/authorized_keys中。
要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。(今天就是遇到这个问题,找了好久问题所在),其实仔细想想,这样做是为了不会出现系统漏洞 注意
作者:flymaster
qq:908601287
blog:http://www.cnblogs.com/flymaster500/
最后一定要在客户端和服务器 执行chmod -R 700 .ssh/ 否则配置是不成功的(每次登录都得重新去输入密码的)