Shell设置免密登陆

面交互命令行方式

sshpass -p 密码 ssh -o StrictHostKeyChecking=no -o ConnectTimeout=3 user@1.1.1.1 "uptime"
  • 方式1:
#!/bin/bash 
IPLIST="
11.7.171.36
11.7.171.37
"


rqm -qa sshpass &> /dev/null || yum -y install sshpass
[ -f /root/.ssh/id_rsa ] || ssh-keygen -f /root/.ssh/id_rsa -P '' 
export SSHPASS='root'

for ip in $IPLIST
do
  sshpass -e ssh-copy-id -o StrictHostkeyChecking=no $ip
done
  • 方式2:
#!/bin/bash 

host_file="host_tmp.txt"

host=$1
passwd=$2
username="root"
[ $# -ne 2 ] && echo "Please input parameter host password" && exit 
echo "$host $username $passwd " >$host_file

while read host ;do
  #ip user passwd 
  ip=$(echo $host|awk '{print $1}')
  user=$(echo $host|awk '{print $2}')
  passwd=$(echo $host|awk '{print $3}')
expect <<EOF
        spawn ssh-copy-id -i $user@$ip
        expect {
                "yes/no" {send "yes\n";exp_continue}
                "password" {send "$passwd\n"}
        }
        expect eof
EOF
  echo "$host -- $user 完成了免密登录!"
done < $host_file
rm -f $host_file

ansible

---
- hosts: auth
  gather_facts: no

  tasks:

  - name: install ssh key
    authorized_key: user=root
                    key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
                    state=present


ansible-playbook ssh-login.yml --ask-pass
posted @ 2020-12-30 10:37  郭培华  阅读(231)  评论(0)    收藏  举报