Linux中可以在两台或者多台机器之间进行免密登录,但是在生成密钥的过程中会出现几次与机器的交互,这个脚本使用expect,避免了人机交互,实现自动化免密登录
脚本内容如下:
#!/bin/bash
rpm -qa|grep expect &>/dev/null
[ "$(echo $?)" != "0" ] && yum -y install expect &>/dev/null && echo "expect install successfully"
result=`find /root -name .ssh`
[ -n "${result}" ] && echo "sshkey existed" && exit
/usr/bin/expect <<EOF
set timeout 30
spawn ssh-keygen
expect "/root/.ssh/id_rsa"
send "\n"
expect "passphrase"
send "\n"
expect "again"
send "\n"
spawn ssh-copy-id -i #写上目标机器的IP
expect {
"yes/no" { send "yes\n"; exp_continue }
"password" { send "password\n" }
}
expect eof
EOF
注意关闭防火墙和selinux