文章目录
- 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.pubWindows 使用 PowerShell 也是一样。
第二步:查看公钥
执行:
cat~/.ssh/id_ed25519.pub会输出:
ssh-ed25519 AAAAC3Nz...... your_email@example.com全部复制。
第三步:添加到 Hetzner
点击:
+ Add SSH key填写:
Name: My LaptopPublic 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 的底层原理。