密匙生成

Windows 系统

创建密匙

打开 PowerShell(推荐)或 CMD,输入以下命令(记得换成你的邮箱):

ssh-keygen -t ed25519 -C "[email protected]"

你会看到的提示:

  • Generating public/private ed25519 key pair. (正在生成一对密匙…)

  • Enter file in which to save the key (C:\Users\Admin/.ssh/id_ed25519):

    • 直接按 Enter 下一步:使用默认路径。
    • 想创建“另外一个”密匙?:在这里输入一个新的路径和名字。例如输入 C:\Users\Admin\.ssh\id_ed25519_second。这样就不会覆盖你之前的旧密匙了。
  • Enter passphrase (empty for no passphrase):

    • 这是问你要不要给密匙再设个密码。直接 Enter 代表不要密码(最省事最危险)。此处输入密码不会显示

成功后,你会看到一串酷酷的字符画,这代表你的“私匙” (id_ed25519) 和“公匙” (id_ed25519.pub) 已经躺在 .ssh 文件夹里了。

Your identification has been saved in C:\Users\Administrator/.ssh/id_ed25519
Your public key has been saved in C:\Users\Administrator/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:VKmdy0LMdf+cZ/9MgutIKHNf8t6XvojNVvgRzrQgJKI [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|          ..     |
|       . oo..    |
|      .oo+oo .   |
|     E .= o. ..o |
|       .S. .. *o+|
|        ..o  o B=|
|      o o.o o +.*|
|       + o =++.*o|
|          o+*+o+=|
+----[SHA256]-----+

删除密匙

在 PowerShell 中输入下面命令。这会删除所有以 id_ed25519 开头的密匙文件:

Remove-Item ~\.ssh\id_ed25519*

如果你想删特定的,就把 * 换成具体的文件名。


Linux & macOS 系统

创建密匙

打开 终端 (Terminal),输入:

ssh-keygen -t ed25519 -C "[email protected]"

提示流程:

  • Enter file in which to save the key (/Users/yourname/.ssh/id_ed25519):

    • 按 Enter:用默认的。
    • 创建第二个?:手动输入新路径,比如 /Users/你的名字/.ssh/id_ed25519_new。这样你就有两把钥匙了。
  • Enter passphrase:这是问你要不要给密匙再设个密码。直接 Enter 代表不要密码(最省事最危险)。此处输入密码不会显示

成功后会输出:

Your identification has been saved in /Users/你的名字/.ssh/id_ed25519
Your public key has been saved in /Users/你的名字/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:VKmdy0LMdf+cZ/9MgutIKHNf8t6XvojNVvgRzrQgJKI [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|    . .          |
|   . o o         |
|    . + o .      |
|     . o B .     |
|      o S B .    |
|     . + @ + .   |
|      . * O o    |
|       . o +E    |
|          .o.    |
+----[SHA256]-----+

删除密匙

在终端输入:

rm ~/.ssh/id_ed25519*

如果你想删特定的,就把 * 换成具体的文件名。


连通性配置与测试

  1. 密匙生成后,你需要先把 .pub 文件里的内容复制,贴到 GitHub(一定要传带 .pub 后缀的那个文件内容!小心把私匙传上去)
    • 登入你的 GitHub。
    • 点击右上角头像 > Settings
    • 左侧选单点选 SSH and GPG keys
    • 点击 New SSH key
    • Title:取个名字(例如:MacBook)。
    • Key:把刚才复制的那串文字贴进去。
    • 点击 Add SSH key

Windows/Mac/Linux

配置 C:\Users\你的用户名\.ssh\config (Windows。确保文件名就叫 config,没有任何后缀名。司马Windows默认隐藏档案名)| ~/.ssh/config (Mac/Linux)里面没有 Github 会出现找不到可以使用密匙的问题(其实如果你使用的是默认名字 id_ed25519,即使不写 config 文件,系统也会自动尝试用这把钥匙。但是下面是最佳实践)

Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519

贴好后,回到 PowerShell | 终端 ,输入这个命令来探探路:

注意:如果你在 config 里把 Host 命名成了 my-github,那么你测试的时候就得输入 ssh -T git@my-github,而不是 [email protected]

Mac/Linux 如果配置完提示 Permissions are too open,请在终端执行: chmod 700 ~/.sshchmod 600 ~/.ssh/config

接下来会发生什么:

  1. 确认身份:如果是第一次连,会提示 The authenticity of host 'github.com' can't be established... Are you sure you want to continue (yes/no/[fingerprint])?
  2. 输入 yes:千万别只按 Enter,要打 yes 再按 Enter。
  3. 成功标志:如果看到 Hi [你的用户名]! You've successfully authenticated...,那就大功告成了!

我有好几个密匙,怎么区分?

如果你按上面的方法创建了“第二个”密匙(比如叫 id_ed25519_second),你需要告诉系统什么时候用哪一个。

  1. C:\Users\你的用户名\.ssh\config | ~/.ssh/config 配置。
# 第一把钥匙:默认账号
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519

# 第二把钥匙:比如公司账号
Host github-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_ed25519_second

这样,当你需要测试第二把钥匙时,只需输入 ssh -T git@github-work 就可以了。


为什么是 Ed25519?

简单说,它是目前最安全、最快、而且密匙最短的算法。相比老旧的 RSA,它的“锁”更精巧,不容易被暴力破解,是目前程序员圈子里的首选。