logo NodeSeekbeta

一键 debian 改秘钥登录

debian13亲测可用,其他系统自测。

个人不太喜欢用这些一键脚本修改,最近妥协了,主要节约时间!!!!顺便也分享一下吧。
怎么用秘钥登录,这个不包含在这次教程内,请自行根据你自己的工具搜索相关教程。

顺便分享一个我常用的DD debian13脚本 登录密码:LeitboGi0ro

wget --no-check-certificate -qO InstallNET.sh 'https://raw.githubusercontent.com/leitbogioro/Tools/master/Linux_reinstall/InstallNET.sh' && chmod a+x InstallNET.sh
bash InstallNET.sh -debian 13
reboot

第1步:

用root登录 运行命令创建秘钥对 生成的秘钥对在 /root/.ssh 带.pub后缀的是公钥 不带的是私钥

rm -f ~/.ssh/id_ed25519* && mkdir -p ~/.ssh && chmod 700 ~/.ssh && ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519 -q && cd ~/.ssh && ls -la

将不带后缀.pub下载下来保存。
如果你的公钥私钥长期不变 可以直接保存2个在本地,以后上传带后缀.pub到/root/.ssh目录 这样方便管理。也不用在运行步骤1的命令。

第2步:

在vps运行命令

nano setup_ssh.sh
chmod +x setup_ssh.sh
sudo ./setup_ssh.sh

把代码写入 setup_ssh.sh
SSH_PORT='' # 修改SSH端口(非必须,不用改请留空)
MY_PUB_KEY='' # 填入你的公钥(这是必填项,否则无法登录)
NEW_PASSWORD='' # 设置ROOT新密码(非必须。注意:密码里别带单引号,不然会报错)

# ========================================================
# 脚本功能:清空旧公钥 -> 写入新公钥 -> 修改密码 -> 改端口 -> 自毁
# 需 root 权限 运行
# ========================================================

# 【自定义设置】修改SSH端口(非必须,不用改请留空)
SSH_PORT=''

# 【自定义设置】填入你的公钥(这是必填项,否则无法登录)
MY_PUB_KEY=''

# 【自定义设置】设置ROOT新密码(非必须。注意:密码里别带单引号,不然会报错)
NEW_PASSWORD=''

# --- 脚本逻辑开始 ---

# 检查 root 权限
if [ "$EUID" -ne 0 ]; then
  echo "❌ 错误: 请以 root 权限运行此脚本。"
  exit 1
fi

# 1. 修复主机名解析 (防止 sudo 慢或报错)
CURRENT_HOSTNAME=$(hostname)
if ! grep -q "$CURRENT_HOSTNAME" /etc/hosts; then
    echo "正在修复主机名解析..."
    echo "127.0.1.1 $CURRENT_HOSTNAME" >> /etc/hosts
fi

# 2. 修改 Root 密码
if [ -n "$NEW_PASSWORD" ]; then
    echo "正在修改 Root 密码..."
    printf "root:%s" "$NEW_PASSWORD" | chpasswd
    echo "✅ 密码修改成功。"
else
    echo "ℹ️ 密码变量为空,跳过修改。"
fi

# 3. 配置 SSH 公钥
echo "正在配置 SSH 公钥..."
mkdir -p ~/.ssh
chmod 700 ~/.ssh

# 覆盖旧的 authorized_keys
echo "$MY_PUB_KEY" > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
echo "✅ 公钥刷新成功。"

# 4. 修改 SSH 配置文件
echo "正在优化 SSH 配置..."

# A. 端口逻辑
if [ -n "$SSH_PORT" ]; then
    if grep -q "^#\?Port" /etc/ssh/sshd_config; then
        sed -i "s/^#\?Port.*/Port $SSH_PORT/" /etc/ssh/sshd_config
    else
        echo "Port $SSH_PORT" >> /etc/ssh/sshd_config
    fi
    echo "✅ 端口已设置为: $SSH_PORT"
else
    echo "ℹ️ 端口变量为空,保持当前系统端口设置。"
    SSH_PORT=$(grep "^Port" /etc/ssh/sshd_config | awk '{print $2}')
    [ -z "$SSH_PORT" ] && SSH_PORT="22"
fi

# B. 开启公钥认证 & 允许 Root 登录
sed -i 's/^#\?PubkeyAuthentication.*/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^#\?AuthorizedKeysFile.*/AuthorizedKeysFile .ssh\/authorized_keys .ssh\/authorized_keys2/' /etc/ssh/sshd_config

# 5. 重启 SSH 服务
echo "正在重启 SSH 服务..."
if systemctl is-active --quiet sshd; then
    systemctl restart sshd
elif systemctl is-active --quiet ssh; then
    systemctl restart ssh
else
    service ssh restart || service sshd restart
fi

# 6. 结果汇报
echo "------------------------------------------------"
echo "✨ 脚本执行完毕!"
echo "🌐 SSH 端口: $SSH_PORT"

if [ -n "$NEW_PASSWORD" ]; then
    echo "🔐 Root 密码: $NEW_PASSWORD"
else
    echo "🔐 Root 密码: 未填写维持原状"
fi

echo "------------------------------------------------"
echo "⚠️  手动模式下 重要安全步骤:"
echo "1. 请【不要关闭】当前连接窗口。"
echo "2. 请新开一个终端窗口尝试登录: ssh -p $SSH_PORT root@服务器IP"
echo "3. 登录成功后,运行以下命令禁用密码登录以确保安全"
echo "sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config && systemctl restart ssh"
echo "------------------------------------------------"

# 【运行完后给予选项】
echo "请选择后续操作:"
echo "1:自动模式:禁用密码登录并重启服务器"
echo "2:手动模式:不禁用密码登录和重启服务器"
read -p "请输入选项 (1/2): " choice

case $choice in
    1)
        echo "正在禁用密码登录..."
        sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
        echo "✅ 密码登录已禁用。"
        echo "正在重启服务器..."
        rm -f -- "$0" 2>/dev/null || true
        reboot
        ;;
    2)
        echo "已选择手动操作。"
        ;;
    *)
        echo "无效输入,默认执行手动操作。"
        ;;
esac

# 7. 自毁(已优化:使用 -f 强制删除 + 静默错误,避免 "No such file" 报错)
rm -f -- "$0" 2>/dev/null || true
echo "✅ 脚本已自毁。"
12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有60098位seeker

🎉欢迎新用户🎉