初始化Linux ssh脚本(启用公钥认证并自动插入已有公钥)

脚本说明

有多台Linux需要进行免密登录的时候可搭配ansible进行使用

  1. 确认Linux系统ssh已开启公钥认证功能,如未开启则自动开启
  2. 在当前用户的ssh配置目录authorized_keys中插入自己的公钥,如果没有~/ssh/authorized_keys则会自动创建并修正权限

脚本代码

gitee仓库有对应脚本文件 https://gitee.com/muzixiaoyao/tools/blob/master/scripts/init_ssh.sh,注意不要直接使用,默认是本人的公钥!

#!/bin/bash

# 配置文件路径
SSH_CONFIG_FILE="/etc/ssh/sshd_config"

# 要添加的公钥(此处请换成自己ssh的公钥,不会的话站内搜索ssh免密登录生成密钥对)
SSH_PUBLIC_KEY="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDUOho6wLZ/KHMV8fCPFylJcNbIAy3dXWU3vcoC/PrsijbIsM2jcUN0RKE6wkZ29Xe1krGcP2TQRkthpR+wDQQREZXv2oEFUxhg9lEcVQSgN1Yl+U1tqMLD0cxkvIZgKj95Miys30IDPbNGmduS4iIIhnLUBaBAp7A6vspwHygoooldpHsPnt0SAI3BrHovS5izZH57fZp6iHWmasWxNy+t39EhXuIKvJSotCnGD+PTMopu1FvN1a3ioh3reWjN95oqcMzhUG13tG86uQX7iZgXbf5NteGll/i1/w/JoIV6uROwlS01/FM8mX43bT36VCl8FEbsA9SNJZv9Zcfgagmg26jjHvOm91Dk7D+Baab4lBIE6haYZTMOzGVu6MM4ByWVxNBcmoRk7Xcn2+5K/hH8KditWWa4IIP3rY2yTXBJTp9Qy28edvdXgJ+KGVqRQf/9nOdZwBMD0bvGfIijHERPSg3BA1covtNXK1nwYOkHunaPFna4rlijzYtewE7Tvfc="
# 也可以在线添加
#SSH_PUBLIC_KEY=$(curl https://gitee.com/muzixiaoyao/tools/raw/master/files/id_rsa.pub)

# 当前用户的 SSH 认证文件
AUTHORIZED_KEYS="$HOME/.ssh/authorized_keys"

# 检查当前 SSH 配置是否启用了密钥登录(PasswordAuthentication 是否为 no)
if grep -q "^PasswordAuthentication yes" $SSH_CONFIG_FILE; then
    echo "SSH 密钥登录未启用,正在修改配置文件..."

    # 修改配置文件,禁用密码登录,启用密钥登录
    sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' $SSH_CONFIG_FILE

    # 确保配置文件中没有其他的 PasswordAuthentication 设置为 yes
    if ! grep -q "^PasswordAuthentication no" $SSH_CONFIG_FILE; then
        echo "PasswordAuthentication no" >>$SSH_CONFIG_FILE
    fi

    # 重启 SSH 服务使配置生效
    systemctl restart sshd

    echo "SSH 密钥登录已启用并重启了 SSH 服务。"
else
    echo "SSH 密钥登录已经启用,无需修改。"
fi

# 创建 ~/.ssh 目录(如果不存在)
if [ ! -d "$HOME/.ssh" ]; then
    echo "创建 ~/.ssh 目录..."
    mkdir -p "$HOME/.ssh"
    chmod 700 "$HOME/.ssh"
fi

# 将公钥添加到 authorized_keys 文件(如果不存在)
if [ ! -f "$AUTHORIZED_KEYS" ]; then
    touch "$AUTHORIZED_KEYS"
    chmod 600 "$AUTHORIZED_KEYS"
fi

# 检查公钥是否已经存在
if grep -q "$SSH_PUBLIC_KEY" "$AUTHORIZED_KEYS"; then
    echo "公钥已经存在于 $AUTHORIZED_KEYS 中,无需添加。"
else
    echo "添加公钥到 $AUTHORIZED_KEYS ..."
    echo "$SSH_PUBLIC_KEY" >>"$AUTHORIZED_KEYS"
    echo "公钥已添加。"
fi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值