SSH免密登录其它用户脚本
这个是同一个网段下免密互联的脚本仅供大家参考
首先我们先需要安装一个sshpass文件 我的是rocky系统 yum install sshpass -y 否则会有报错
这个版本只能是第一台主机(即执行此脚本命令的主机)登录到其他主机免密,反之不免密。
#!/bin/bash# Rocky系统SSH免密登录配置脚本
# 使用方法:在每台主机上执行此脚本,按提示输入其他主机信息# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; thenecho -e "${RED}错误:请使用root用户执行此脚本${NC}"exit 1
fi# 生成SSH密钥
echo -e "${YELLOW}正在生成SSH密钥对...${NC}"
if [ ! -f ~/.ssh/id_rsa ]; thenssh-keygen -t rsa -N "" -f ~/.ssh/id_rsaecho -e "${GREEN}SSH密钥对生成成功${NC}"
elseecho -e "${GREEN}SSH密钥对已存在,跳过生成${NC}"
fi# 获取本机IP
read -p "请输入本机IP地址: " local_ip# 定义其他两台主机信息
echo -e "${YELLOW}请输入其他两台主机信息${NC}"
read -p "第一台主机IP: " host1_ip
read -p "第一台主机用户名: " host1_user
read -p "第二台主机IP: " host2_ip
read -p "第二台主机用户名: " host2_user# 添加主机到known_hosts
add_to_known_hosts() {echo -e "${YELLOW}正在将主机 $1 添加到known_hosts...${NC}"ssh-keyscan -H $1 >> ~/.ssh/known_hosts 2>/dev/null
}# 复制公钥到目标主机
copy_public_key() {echo -e "${YELLOW}正在将公钥复制到 $1@$2...${NC}"sshpass -p "$3" ssh-copy-id -o StrictHostKeyChecking=no $1@$2if [ $? -eq 0 ]; thenecho -e "${GREEN}公钥复制成功${NC}"elseecho -e "${RED}公钥复制失败,请检查密码和网络连接${NC}"exit 1fi
}# 测试SSH连接
test_ssh_connection() {echo -e "${YELLOW}正在测试到 $1@$2 的SSH连接...${NC}"ssh -o ConnectTimeout=5 $1@$2 "echo 'SSH连接测试成功'"if [ $? -eq 0 ]; thenecho -e "${GREEN}SSH连接测试成功${NC}"elseecho -e "${RED}SSH连接测试失败${NC}"exit 1fi
}# 配置其他主机
for i in 1 2; dohost_ip=host${i}_iphost_user=host${i}_user# 获取目标主机密码read -s -p "请输入${!host_user}@${!host_ip}的密码: " passwordecho# 添加到known_hostsadd_to_known_hosts ${!host_ip}# 复制公钥copy_public_key ${!host_user} ${!host_ip} "$password"# 测试连接test_ssh_connection ${!host_user} ${!host_ip}
doneecho -e "${GREEN}SSH免密登录配置完成!${NC}"
echo -e "${GREEN}现在你可以从 $local_ip 无密码SSH到其他主机${NC}"