SSH无密码登录

client 192.168.1.10(ansible@client无密码登录到ansible@server)

server   192.168.1.20

首先在客户端上创建一对公私钥(公钥文件:~/.ssh/id_rsa.pub;私钥文件:~/.ssh/id_rsa),然后把公钥放到服务器上(~/.ssh/authorized_keys),自己保留好私钥。当ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以登录了.

第一次登陆后,ssh就会把登陆的ssh指纹存放在用户home目录的.ssh目录的know_hosts文件中,如果ssh指纹已经改变,你需要把 .ssh 目录下的know_hosts中的相应指纹删除,再登陆回答yes,方可登陆

ssh public key解决密码登录问题

openssh的ssh-keygen命令用来产生私钥和公钥(非对称加密)

#ansible@client产生公钥和私钥(生成的私钥和公钥在家目录的.ssh文件夹下)

[ansible@client]ssh-keygen -b 1024 -t dsa

#client把公钥分发到ansible@server家目录的.ssh文件夹下 .ssh的权限必须为700 否则ssh会拒绝无密码登录

[ansible@server]mkdir /root/.ssh;chmod 700 /root/.ssh

[ansible@client]scp -p 10002 /home/ansible/.ssh/id_dsa.pub ansible@192.168.1.20:~/.ssh/authorized_keys #以后添加其它主机的公钥叠加到authorized_keys文件 >>

#test

[ansible@client]ssh -p 10002 ansible@192.168.1.20 'sudo cat /etc/shadow'

#相关脚本

 1 #!/bin/bash
 2 #2014-8-13
 3 
 4 stuff="gtv_ma_1029_M325.apk"
 5 
 6 array_node[0]="*"#ip以*代替 保护隐私
 7 array_node[1]="*"
 8 array_node[2]="*"
 9 array_node[3]="*"
10 array_node[4]="*"
11 array_node[5]="*"
12 array_node[6]="*"
13 #到各节点上找出$stuff文件 并计算出md5值
14 for i in ${array_node[*]}
15 do
16         printf "$((++n)):%s	%s
" $i $(ssh -p 10002 root@$i "find / -name $stuff -type f -exec md5sum {} ; 2>/dev/null | cut -d ' ' -f1")
17 done
原文地址:https://www.cnblogs.com/metasequoia/p/3899645.html