Ubuntu22.04关闭密码到密钥登录指南

2026-04-17T08:01:00

使用密钥登录(Public Key Authentication)相比密码登录,能有效抵御暴力破解攻击。本文将让你从零开始完成设置。

第一步:本地生成密钥对

在你的 本地电脑(Windows PowerShell、macOS 或 Linux 终端)执行:

ssh-keygen -t ed25519 -C "your_email@example.com"
  • 提示保存路径:直接按回车(默认路径 ~/.ssh/id_ed25519)。
  • 提示输入密码 (Passphrase):可选。如果输入了,每次使用密钥时需输入此密码(额外保护)。
  • 结果:你将获得两个文件:
  • id_ed25519私钥,绝对不能泄露给任何人。
  • id_ed25519.pub公钥,稍后上传到服务器。

第二步:在服务器配置公钥

如果服务器是全新的,可能不存在 .ssh 目录。

1. 手动创建环境

服务器 上执行:

mkdir -p /root/.ssh
chmod 700 /root/.ssh
touch /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

2. 写入公钥内容

使用编辑器打开文件:

nano /root/.ssh/authorized_keys

将本地电脑生成的 id_ed25519.pub 文件中的 全部内容 粘贴进去,保存退出(先Ctrl+O,再 Enter,最后 Ctrl+X退出)。

第三步:修改 SSH 配置文件

这是最关键的一步,决定了服务器是否接受密码登录。

执行命令:

nano /etc/ssh/sshd_config

在文件中找到并确保以下参数按如下设置(若有 # 请删掉):

配置项设置值说明PubkeyAuthenticationyes允许使用公钥登录PasswordAuthenticationno禁止使用密码登录KbdInteractiveAuthenticationno禁用键盘交互认证(现代版挑战响应验证)
:在旧版教程中常见的 ChallengeResponseAuthentication 在 Ubuntu 22.04 中已更名为 KbdInteractiveAuthentication

第四步:测试并重启服务

1. 语法检查

在应用配置前,检查是否有拼写错误:

sshd -t

若无任何输出,说明配置合法。

2. 重启 SSH 服务

systemctl restart ssh

3. 极其重要:双重验证

不要关闭当前的 SSH 窗口! 1. 在本地电脑新开一个窗口尝试连接:ssh root@服务器IP

  1. 如果无需密码直接进入(或仅提示输入密钥密码),说明成功。
  2. 如果新窗口能进去,你就可以放心关闭旧窗口。

常见问题排查 (FAQ)

  • 报错 "Permission denied":通常是 /root.ssh 目录或 authorized_keys 文件的权限权限过大导致。请严格执行上述的 chmod 命令。
  • 误操作锁死怎么办?
    如果你禁用了密码且密钥没配好,你只能通过云服务商提供的 VNC 控制台 登录,将 PasswordAuthentication 改回 yes 救急。

这样完成后,你就能放心使用了
上文如有欠缺,请大佬拍砖指正,我一定立正聆听并修改

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »