服务器之间免密登录
一、简便方法
1、所有服务器执行
mkdir -p /root/.ssh
cd /root/.ssh
ssh-keygen -t rsa
chmod 700 /root/.ssh
2、将本机的公钥拷贝到其他机器上
输入yes
输入对方服务器密码
192.168.56.101
ssh-copy-id [email protected]
二、让服务器A实现免密登录自己
1、在A服务器中指定的位置(/root/.ssh)生成私钥id_rsa和公钥id_rsa.pub;
在服务器A操作
mkdir -p /root/.ssh
cd /root/.ssh
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
scp id_rsa.pub [email protected]:/tmp
ssh [email protected]
mkdir -p /root/.ssh
cd /root/.ssh
cat /tmp/id_rsa.pub >> authorized_keys
2、在B服务器中指定的位置(/root/.ssh)生成私钥id_rsa和公钥id_rsa.pub;
在服务器B操作
mkdir -p /root/.ssh
cd /root/.ssh
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
scp id_rsa.pub [email protected]:/tmp
ssh [email protected]
mkdir -p /root/.ssh
cd /root/.ssh
cat /tmp/id_rsa.pub >> authorized_keys
三、最终脚本
配置下面的ip 密码
执行下面的脚本
配置需要
在192.168.56.100 执行下面的脚本后,所有配置的都可以互免密了
#设置要登入的节点ip地址
NOW_IP=“192.168.56.100”
所有服务器的ip
HOST_IP_NODE=(“192.168.56.100” “192.168.56.101” “192.168.56.102”)
所有服务器对应的密码
HOST_PASS_NODE=(“123456” “123456” “123456”)
#!/bin/sh
CURRENT_DIR=$(
cd "$(dirname "$0")"
pwd
)
#///
# 使用方法
# 配置下面的NOW_IP HOST_IP_NODE HOST_PASS_NODE
# 执行该脚本,然后登录测试一下即可
#---------------设置ssh免密登入对台设备---------------#
# 设置要登入的节点ip地址
# 当前执行脚本服务器的ip
NOW_IP="192.168.56.100"
# 所有服务器的ip
HOST_IP_NODE=("192.168.56.100" "192.168.56.101" "192.168.56.102")
# 所有服务器对应的密码
HOST_PASS_NODE=("123456" "123456" "123456")
sed -i -e "s/StrictHostKeyChecking/#StrictHostKeyChecking/g" /etc/ssh/ssh_config
#本机ip
native_ip=$(ip addr | awk '/^[0-9]+: / {
}; /inet.*global/ {
print gensub(/(.*)\/(.*)/, "\\1", "g", $2)}'|awk 'NR==1')
echo "【本机ip】$native_ip"
#安装expect软件包
# yum install expect -y
# 下载离线rpm yumdownloader --resolve expect
rpm -Uvh --force --nodeps *.rpm
expect << EOF
set timeout 5
spawn ssh-keygen -t rsa
expect "id_rsa):"
send "\r"
expect "passphrase):"
send "\r"
expect "again:"
send "\r"
expect eof
EOF
copy_id(){
expect << EOF
set timeout 5
spawn ssh-copy-id $1
expect "(yes/no)?"
send "yes\r"
expect "password:"
send "$2\r"
expect eof
EOF
}
#循环遍历
num=${#HOST_IP_NODE[*]}
fun(){
for((i=0;i<$num;i++));
do
if [ ${HOST_IP_NODE[i]} == $native_ip ]
then
echo "本机不做操作"
else
copy_id root@${HOST_IP_NODE[i]} ${HOST_PASS_NODE[i]}
if [ $NOW_IP == $native_ip ]
then
echo "$native_ip 远程操作 "
echo "ssh ${HOST_IP_NODE[i]} \"rm -rf /root/sshNoPwd\""
ssh ${HOST_IP_NODE[i]} "rm -rf /root/sshNoPwd"
scp -r $CURRENT_DIR root@${HOST_IP_NODE[i]}:/root
ssh ${HOST_IP_NODE[i]} 'bash -s' <<'ENDSSH'
chmod +x /root/sshNoPwd/sshNoPwd.sh
cd /root/sshNoPwd
./sshNoPwd.sh
ENDSSH
fi
fi
done
}
fun
参考地址: https://blog.csdn.net/qq_36120342/article/details/127648709