在4台Linux(Centos) 服务器中配置免密登录
–>以主机名为hadoop1、hadoop2、hadoop3、hadoop4,用户均为hadoop,密码为hadoop1234为例(免密登录只针对以某个用户的身份登录某个节点,建议配置免密登录时在所有节点上创建相同用户名的用户及相同密码)
1. 在所有节点中安装expect
yum install expect
2.编写可执行文件 vi ssh_conf.sh
#!/bin/bash
HOSTS="hadoop@hadoop1 hadoop@hadoop2 hadoop@hadoop3 hadoop@hadoop4"
# 用户名@主机名
PASSWD="hadoop1234"
# 所有主机上 该用户名对应密码
auto_ssh_copy_id(){
expect -c "set timeout -1;
spawn ssh-copy-id $1;
expect {
*(yes/no)* {send -- yes\r;exp_continue;}
*assword* {send -- $2\r;exp_continue;}
eof {exit 0;}
}";
}
create_ssh_id(){
expect -c "set timeout -1;
spawn ssh-keygen -t rsa;
expect {
*.ssh/id_rsa* {send -- \r;exp_continue;}
*passphrase* {send -- \r;exp_continue;}
*again:* {send -- \r;exp_continue;}
eof {exit 0;}
}";
}
ssh_copy_id_to_all(){
for SERVER in $HOSTS
do
auto_ssh_copy_id $SERVER $PASSWD
done
}
create_ssh_id #生成公钥及私钥
ssh_copy_id_to_all #将公钥拷贝到其他节点,包括自己
3.添加可执行权限
chome +x ssh_conf.sh
4.运行可执行文件
./ssh_conf.sh