Hetzner创建云服务器SSH Keys配置介绍(公钥、私钥、密钥配置、SSH配置)

📅 2026/7/4 20:31:17 👁️ 阅读次数 📝 编程学习
Hetzner创建云服务器SSH Keys配置介绍(公钥、私钥、密钥配置、SSH配置)

文章目录

  • Hetzner创建云服务器SSH Keys配置介绍
  • 为什么会有 SSH Key?
  • SSH Key 到底是什么?
  • 为什么叫公钥和私钥?
  • 登录过程发生了什么?
  • 为什么服务器只有公钥还能验证?
  • SSH Key 为什么不能反推出私钥?
  • Hetzner 为什么让你添加 SSH Key?
  • 整个流程图
  • 实际操作(Windows / macOS / Linux 都适用)
    • 第一步:生成 SSH Key
    • 第二步:查看公钥
    • 第三步:添加到 Hetzner
    • 第四步:创建服务器
    • 注意这里如果不是用默认生成的SSH密钥,需要在`~/user/.ssh/config`中添加配置
    • 第五步:登录
    • 建议

Hetzner创建云服务器SSH Keys配置介绍

Hetzner 创建云服务器时的SSH Keys配置,这是现代 Linux 服务器最推荐的登录方式。

你可以把 SSH Key 理解成一种比密码更安全、更方便的身份证

先看一下截图里的提示:

No SSH key selected.

我们推荐使用 SSH Key,否则我们会把 root 密码发送到你的邮箱。

也就是说:

  • 使用 SSH Key:创建服务器时就把你的公钥放进去,以后直接登录,不需要密码。
  • 不使用 SSH Key:Hetzner 会生成一个 root 密码,通过邮件发给你。

为什么会有 SSH Key?

先理解密码登录为什么不好。

假设你的服务器 IP 是:

49.12.xx.xx

传统登录方式:

sshroot@49.12.xx.xx

然后:

Password:

输入密码。

问题来了:

  • 密码容易泄露
  • 容易被暴力破解
  • 需要记住
  • 密码可能在邮件中传播
  • 自动化脚本不方便

所以后来大家想到:

为什么不用公钥密码学?

于是就有了 SSH Key。


SSH Key 到底是什么?

它其实就是一对钥匙:

┌───────────────┐ │ ssh-keygen │ └──────┬────────┘ │ ▼ 私钥(Private Key) id_ed25519 │ │ │ ▼ 公钥(Public Key) id_ed25519.pub

生成的时候,一次产生两把钥匙。

其中:

私钥

id_ed25519

只有你自己保存。

永远不要给别人。


公钥

id_ed25519.pub

可以公开。

里面长这样:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...

这就是你要上传到 Hetzner 的东西。


为什么叫公钥和私钥?

因为它们是一对。

可以理解成:

公钥 = 锁 私钥 = 钥匙

服务器只安装:

你的电脑保存:

钥匙

只有你的钥匙能打开那把锁。

所以:

服务器 ← 公钥 电脑 ← 私钥

登录过程发生了什么?

假设:

你的电脑:

Private Key

服务器:

Public Key

登录:

sshroot@server

整个过程其实类似:

你的电脑 Private Key │ │ ▼ 我可以证明 我拥有私钥 │ ────────────►│ 服务器 Public Key 验证: 这个签名 是不是对应 我的公钥? 是 允许登录

重点:

整个过程没有传输私钥。

密码也没有传输。


为什么服务器只有公钥还能验证?

这是公钥密码学最神奇的地方。

举个例子。

假设:

服务器说:

给你一道题: 123456789

你的电脑拿私钥:

签名: ABCDXYZ...

发回服务器。

服务器用:

Public Key

验证:

是不是对应? ✔ 是

于是:

你一定拥有私钥。

但服务器永远不知道私钥是什么。

这就是数字签名的原理。


SSH Key 为什么不能反推出私钥?

因为使用的是成熟的公钥密码算法,例如:

  • Ed25519(目前推荐)
  • RSA(老但仍常见)
  • ECDSA

这些算法设计上就是:

Private Key │ ▼ 数学运算 ▼ Public Key

这个过程容易。

反过来:

Public Key ↓ Private Key

几乎不可能。

否则整个互联网 HTTPS 都会失效。


Hetzner 为什么让你添加 SSH Key?

创建服务器的时候,它会做一件事:

你的公钥 ↓ 写进服务器: ~/.ssh/authorized_keys

例如:

/root/.ssh/authorized_keys

里面就是:

ssh-ed25519 AAAAC3Nza....

以后:

ssh root@server

服务器就会检查:

你的私钥 ↓ 是不是对应 authorized_keys 里的公钥?

如果匹配:

登录成功

整个流程图

第一次 你的电脑 ────────────── 生成: id_ed25519 id_ed25519.pub │ │上传 ▼ Hetzner 创建服务器 │ 写入: authorized_keys ──────────────────────── 以后登录: ssh root@IP │ 使用: Private Key │ 数字签名 ▼ 服务器 Public Key │ 验证成功 ▼ 登录

实际操作(Windows / macOS / Linux 都适用)

具体操作记录参考文章:Hetzner服务器购买和Cloudflare域名配置记录(hcloud CLI)

第一步:生成 SSH Key

打开终端执行:

ssh-keygen-ted25519-C"your_email@example.com"

邮箱部分是注释,不影响密钥的实际功能

参考文章:ssh-keygen命令介绍

一路按回车即可。

生成后通常会得到:

~/.ssh/id_ed25519 ~/.ssh/id_ed25519.pub

Windows 使用 PowerShell 也是一样。


第二步:查看公钥

执行:

cat~/.ssh/id_ed25519.pub

会输出:

ssh-ed25519 AAAAC3Nz...... your_email@example.com

全部复制。


第三步:添加到 Hetzner

点击:

+ Add SSH key

填写:

Name: My Laptop
Public Key: ssh-ed25519 AAAAC3Nza...

保存。


第四步:创建服务器

创建服务器时勾选:

✓ My Laptop

服务器创建完成后,就已经信任你的电脑了。


注意这里如果不是用默认生成的SSH密钥,需要在~/user/.ssh/config中添加配置

Host hetzner-server HostName ********** User root IdentityFile ~/.ssh/hetzner_jobcopilot IdentitiesOnly yes

第五步:登录

sshroot@服务器IP

第一次会提示:

Are you sure you want to continue connecting?

输入:

yes

之后就直接进入服务器,不需要输入 root 密码。


sshhetzner-server

第一次登陆,键入yes

建议

如果你接下来打算用 Hetzner 部署项目,我建议从一开始就使用 SSH Key 登录,而不是密码登录。这也是 Linux 运维和云平台(包括 GitHub、GitLab、AWS、Azure、Google Cloud 等)的主流做法。

如果你感兴趣,我还可以进一步讲解SSH 的完整工作机制,包括:

  • 为什么第一次连接会出现Are you sure you want to continue connecting?(Host Key 是什么)
  • known_hosts文件的作用
  • authorized_keys文件的作用
  • SSH 登录过程中完整的握手流程(客户端认证、服务器认证、会话密钥协商),帮助你真正理解 SSH 的底层原理。