服务器SSH切换密钥登录- 一键脚本
本文最后更新于 2026-01-24,文章内容可能已经过时。
# ================= 配置区域 (只改这一行,改为自己的公钥) =================
MY_SSH_KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIE4cpfXTfA5QIsqyyaGug4UIeFXFfuiratNqiJQEbQDPykf admin_key"
# =======================================================
# 1. 准备 SSH 目录和权限
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "$MY_SSH_KEY" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 2. 备份原配置文件 (防止改坏)
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
# 3. 暴力修改主配置文件 (适配大多数系统)
# 先删除已有的相关行,避免重复
sed -i '/^PermitRootLogin/d' /etc/ssh/sshd_config
sed -i '/^PasswordAuthentication/d' /etc/ssh/sshd_config
sed -i '/^PubkeyAuthentication/d' /etc/ssh/sshd_config
# 写入新配置
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "PasswordAuthentication no" >> /etc/ssh/sshd_config
# 4. 专治 Ubuntu 24.04+ 等新系统的“顽疾” (优先级覆盖)
# 如果存在 .d 目录,写入一个 00 开头的最高优先级文件
if [ -d "/etc/ssh/sshd_config.d" ]; then
echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/00-disable-password.conf
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config.d/00-disable-password.conf
fi
# 5. 重启 SSH 服务
if command -v systemctl >/dev/null 2>&1; then
systemctl restart sshd
else
service ssh restart
fi
# 6. 验证结果
echo "================================================="
echo "✅ 搞定!SSH 密钥已添加,密码登录已强制关闭。"
echo "🔑 请确保你的 FinalShell 已配置好私钥连接!"
echo "================================================="1.在本地电脑终端生成一堆密钥:
ssh-keygen -t ed25519 -C "admin_key"2.复制生成的公钥到一键脚本第一行替换
3.服务器执行粘贴脚本
4.不要关闭服务器SSH窗口,再开一个新窗口测试密码登录是否被禁用
5.ssh登录改为密钥登录,私钥上传第一步生成的私钥
6.应用确认登录成功,OK,搞定
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 柯舟听风