Shell设置免密登陆

免交互命令行方式

1
sshpass -p 密码 ssh -o StrictHostKeyChecking=no -o ConnectTimeout=3 user@1.1.1.1 "uptime"
  • 方式1:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/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

1
2
3
4
5
6
7
8
9
10
11
12
13
---
- 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

Shell设置免密登陆
https://blog.api-bj.top/2024/09/30/Shell设置免密登陆/
作者
郭培华
发布于
2024年9月30日
许可协议