[ssh 无密码访问]linux ssh公匙密匙无密码访问

[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/ 否则配置是不成功的(每次登录都得重新去输入密码的)

 

posted @ 2018-12-21 15:10  flymaster_zw  阅读(464)  评论(0编辑  收藏  举报