运维 / 2026-11-03

腾讯云 Linux 服务器配置 SSH 密钥登录:Windows 生成密钥、创建用户与免密 sudo 完整教程

Windows 生成密钥、创建用户与免密 sudo 完整教程

本文介绍如何在 Windows 上生成 SSH 密钥,为腾讯云 Linux 服务器创建独立用户、配置免密 sudo,并通过腾讯云控制台绑定密钥完成登录。

本文以用户 text 、服务器 192.168.0.1 为例。实际操作时,请替换为自己的 Linux 用户名和服务器 IP 地址。

1. 私钥和公钥的原理

SSH 密钥由一对相互关联的文件组成:

私钥

:保存在自己的电脑中,是必须严格保密的登录凭证。

公钥

:可以公开,保存在需要登录的服务器中。

密钥对

:私钥和公钥在数学上互相关联,但具有单向性。

1.1 为什么公钥和私钥可以用于登录

生成密钥时,计算机会先生成一个随机且难以猜测的私钥,然后根据私钥计算出对应的公钥。

这个计算过程具有以下特点:

私钥 → 可以计算出公钥
公钥 → 无法在现实可行的时间内反推出私钥

因此,将公钥放到服务器上不会暴露私钥。即使别人获得了公钥,也不能仅凭公钥生成可以登录服务器的私钥。

SSH 登录并不是把私钥发送给服务器,而是采用“签名与验证”的方式证明身份。

登录过程大致如下:

1. 用户在 Windows 上发起 SSH 连接。 2. 用户告诉服务器自己准备使用哪一把公钥。 3. 服务器检查该用户是否保存了这把公钥。 4. SSH 客户端使用本地私钥对本次连接的信息进行数字签名。 5. 客户端只把签名结果发送给服务器,不发送私钥。 6. 服务器使用已经保存的公钥验证签名。 7. 验证成功,说明客户端确实持有对应私钥,服务器允许登录。

整个过程中,私钥始终保留在用户自己的 Windows 电脑中。

可以把它理解为:

私钥:只能由本人使用的印章
公钥:服务器保存的验章工具
签名:本次登录产生的印章痕迹

服务器只能判断签名是否正确,无法通过公钥或签名复制出私钥。

1.2 腾讯云在其中做了什么

通过腾讯云控制台绑定 SSH 密钥时,上传的是公钥,不是私钥。

腾讯云的自动化服务会把公钥写入指定 Linux 用户的文件:

/home/text/.ssh/authorized_keys

以后使用 text 登录时,SSH 服务会读取这个文件中的公钥,并验证客户端是否持有对应私钥。

整个关系如下:

Windows 电脑
  └─ 私钥:C:\Users\你的用户名\.ssh\key_text
              │
              │ 发起签名验证
              ▼
腾讯云 Linux 服务器
  └─ 公钥:/home/text/.ssh/authorized_keys

这种方式更加安全,主要因为:

私钥不会上传腾讯云或服务器。

私钥不会在登录过程中通过网络传输。

公钥即使泄露,也很难反推出私钥。

服务器不需要保存用户登录密码。

可以为每位维护人员分配独立密钥。

某人的权限需要取消时,只需删除对应公钥。

但是,如果私钥文件被别人获取,对方就可能冒充该用户登录。因此,私钥仍然必须像重要密码一样妥善保管。

1.3 公钥的格式

常见的公钥如下:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... text@server

其中:

ssh-ed25519 是密钥算法。

中间的长字符串是公钥主体。

最后的 text@server 是备注,用来辨认密钥。

向腾讯云导入时,建议复制完整一行,包括最后的备注。

【截图 1:私钥、公钥、腾讯云和 Linux 服务器之间的关系】

2. 在 Windows 上生成密钥

打开 PowerShell,执行:

ssh-keygen -t ed25519 -a 100 `
  -f "$env:USERPROFILE\.ssh\key_text" `
  -C "text@server"

执行过程中会询问是否设置私钥密码:

设置密码更安全,但使用私钥时需要输入密码。

直接按两次回车,则生成无密码私钥,使用方便,但必须更加谨慎地保管。

生成的文件位于:

私钥:C:\Users\你的用户名\.ssh\key_text
公钥:C:\Users\你的用户名\.ssh\key_text.pub

查看公钥:

Get-Content "$env:USERPROFILE\.ssh\key_text.pub"

图片

私钥文件不要上传腾讯云、GitHub、网盘,也尽量不要给任何人。腾讯云需要的是 .pub 公钥内容。

3. 在服务器创建 Linux 用户

先使用已有管理员账号进入服务器,然后切换到 root:

sudo -i

设置准备创建的用户名:

NEW_USER=text

创建用户并指定 Bash:

useradd --create-home --shell /bin/bash "$NEW_USER"

创建 SSH 配置目录:

install -d \
  -m 700 \
  -o "$NEW_USER" \
  -g "$NEW_USER" \
  "/home/$NEW_USER/.ssh"

将用户加入 wheel 管理员组:

usermod -aG wheel "$NEW_USER"

配置无需密码的 sudo:

printf '%s\n' "$NEW_USER ALL=(ALL:ALL) NOPASSWD: ALL" \
  > "/etc/sudoers.d/$NEW_USER"

chown root:root "/etc/sudoers.d/$NEW_USER"
chmod 440 "/etc/sudoers.d/$NEW_USER"

检查 sudo 配置:

visudo -cf "/etc/sudoers.d/$NEW_USER"

验证用户:

id "$NEW_USER"
sudo -l -U "$NEW_USER"
sudo -u "$NEW_USER" sudo -n whoami

最后一条命令应输出:

root

NOPASSWD: ALL 基本等同于授予完整 root 权限,只能提供给可信任的维护人员。

图片

4. 在腾讯云添加并绑定 SSH 密钥

进入腾讯云控制台,找到对应服务器所属产品的

SSH 密钥

页面。

腾讯云轻量应用服务器通常支持在线绑定和离线绑定。生产服务器优先使用在线绑定,避免因关机中断业务。

4.1 导入公钥

1. 点击“创建密钥”。 2. 选择“导入已有公钥”。 3. 输入便于识别的密钥名称,例如:

key_text

1. 在公钥输入框粘贴以下命令显示的完整内容:

Get-Content "$env:USERPROFILE\.ssh\key_text.pub"

1. 确认创建。

腾讯云只需要公钥,不需要也不应该上传私钥。

图片

4.2 绑定到服务器

1. 在 SSH 密钥列表中找到 key_text 。 2. 点击“绑定实例”。 3. 选择目标云服务器。 4. 优先选择“在线绑定”。 5. 用户名选择“指定用户名”。 6. 输入:

text

1. 点击确认,等待绑定完成。

用户名必须与服务器中创建的 Linux 用户完全一致,大小写也必须一致。

在线绑定通常要求:

云服务器处于运行状态。

腾讯云自动化助手处于运行状态。

Linux 用户已经提前创建。

用户的 Home 目录和.ssh 目录权限正确。

如果使用离线绑定,腾讯云可能会关闭或重启服务器。生产环境应提前安排维护时间。

图片

5. 测试登录

回到 Windows PowerShell,执行:

ssh -o IdentitiesOnly=yes `
  -i "$env:USERPROFILE\.ssh\key_text" `
  text@192.168.0.1

192.168.0.1 是本文使用的示例地址。通过互联网连接腾讯云时,通常应替换为服务器的公网 IP。

首次连接时可能出现服务器指纹提示:

Are you sure you want to continue connecting (yes/no/[fingerprint])?

确认 IP 和服务器正确后输入:

yes

登录后检查当前用户:

whoami
hostname

预期结果类似:

text
服务器主机名

验证免密 sudo:

sudo -n whoami

预期输出:

root

测试完成后退出:

exit

图片

6. 常见问题

6.1 登录时仍然要求密码

这通常表示公钥没有正确绑定到对应用户。检查:

SSH 命令中的用户名是否正确。

是否选择了正确的私钥。

腾讯云绑定时填写的用户名是否正确。

公钥是否绑定到了目标实例。

实例的 22 端口是否已在安全组中开放。

6.2 提示

Permission denied (publickey) 使用调试模式查看详细信息:

ssh -vvv -o IdentitiesOnly=yes `
  -i "$env:USERPROFILE\.ssh\key_text" `
  text@192.168.0.1

检查服务器目录权限:

sudo chmod 700 /home/text
sudo chmod 700 /home/text/.ssh
sudo chmod 600 /home/text/.ssh/authorized_keys
sudo chown -R text:text /home/text/.ssh

6.3 绑定后旧密钥无法登录

不同腾讯云产品和绑定方式对旧密钥的处理可能不同。更换密钥时应遵循:

1. 保持现有管理员会话不要退出。 2. 创建并绑定新密钥。 3. 使用新私钥成功登录。 4. 验证 sudo 正常。 5. 最后再解绑或删除旧密钥。

不要在新密钥尚未验证时删除唯一可用的旧密钥。

7. 安全建议

每名维护人员使用独立 Linux 用户和独立密钥。

不要多人共用 root 私钥。

私钥泄露后立即解绑并更换。

定期清理离职人员的账号、公钥和 sudo 权限。

腾讯云控制台账号应开启多因素认证。

公网 SSH 尽量限制来源 IP。

保留至少一种经过验证的应急登录方式。

不要把私钥放进项目仓库。

删除旧密钥前,必须先确认新密钥能够登录。

参考资料

腾讯云:管理 SSH 密钥

腾讯云:使用 SSH 登录 Linux 实例

腾讯云轻量应用服务器:管理密钥粗体