ssh免密操作

1.三台切换普通用户用户

su 普通用户

2.删除宿主目录下的.ssh文件夹

rm -rf .ssh/

3.三台都创建密钥

ssh-keygen -t rsa

4.master生成认证文件

cd .ssh
cat id_rsa.pub >> authorized_keys

5.将另外两台的公钥发送给master

cd .ssh
scp id_rsa.pub 用户名@master:~/.ssh/1
scp id_rsa.pub 用户名@master:~/.ssh/2

6.将1和2两个文件的内容追加到认真文件里面

cat 1 2 >> authorized_keys

7.将认证文件分发

scp authorized_keys 用户名@slave1:~/.ssh/
scp authorized_keys 用户名@slave2:~/.ssh/

8.修改权限

cd .ssh
chmod 700 authorized_keys

9.测试

ssh 用户名@主机名

记得退出!!!–exit

一键部署脚本

#!/bin/bash

# 设置用户名、密码和远程主机列表
REMOTE_USER="root"
REMOTE_PASS="123456"  # ← 请改成实际密码(注意安全)
HOSTS=("192.168.1.101" "192.168.1.102")

# 创建 SSH 密钥对(如不存在)
if [ ! -f ~/.ssh/id_rsa ]; then
    echo "未检测到 RSA 密钥,正在创建..."
    ssh-keygen -t rsa  -N "" -f ~/.ssh/id_rsa
else
    echo "已存在 RSA 密钥,跳过创建。"
fi

# 分发公钥到每台主机
for HOST in "${HOSTS[@]}"; do
    echo "正在向 $HOST 分发公钥..."
    sshpass -p "$REMOTE_PASS" ssh-copy-id -i ~/.ssh/id_rsa.pub -o StrictHostKeyChecking=no ${REMOTE_USER}@${HOST}
    
    if [ $? -eq 0 ]; then
        echo "成功分发到 $HOST"
    else
        echo "分发失败:$HOST,请检查连接或认证信息"
    fi
done

改良版本

#!/bin/bash

# 定义主机列表变量为 HOSTS
HOSTS=("192.168.0.102" "192.168.0.103")
USER="root"

# 安全读取密码,不回显
read -s -p "请输入 $USER 的登录密码: " PASSWORD
echo ""

# 检查本地是否已有密钥,没有就生成
[ -f ~/.ssh/id_rsa.pub ] || ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa

# 储存公钥
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

# 确保每台服务器都有密钥
for HOST in "${HOSTS[@]}"; do
  echo ">>> [$HOST] 生成密钥(如果尚未存在)"
  sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no $USER@$HOST \
    "mkdir -p ~/.ssh && [ -f ~/.ssh/id_rsa.pub ] || ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa"
done

# 拉取所有服务器的公钥到本地
echo ">>> 收集所有服务器公钥到本地"
for HOST in "${HOSTS[@]}"; do
  sshpass -p "$PASSWORD" ssh -o StrictHostKeyChecking=no $USER@$HOST \
    "cat ~/.ssh/id_rsa.pub" >> ~/.ssh/authorized_keys
done

# 分发合并后的 authorized_keys 到所有服务器
echo ">>> 分发合并后的 authorized_keys 到所有服务器"
for HOST in "${HOSTS[@]}"; do
  sshpass -p "$PASSWORD" scp -o StrictHostKeyChecking=no ~/.ssh/authorized_keys $USER@$HOST:~/.ssh/authorized_keys
done

echo "SSH 免密互信已配置完成"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值