密匙生成
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*
如果你想删特定的,就把 * 换成具体的文件名。
连通性配置与测试
- 密匙生成后,你需要先把
.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 | 终端 ,输入这个命令来探探路:
ssh -T [email protected]
注意:如果你在 config 里把 Host 命名成了 my-github,那么你测试的时候就得输入 ssh -T git@my-github,而不是 [email protected]。
Mac/Linux 如果配置完提示 Permissions are too open,请在终端执行: chmod 700 ~/.ssh 和 chmod 600 ~/.ssh/config
接下来会发生什么:
- 确认身份:如果是第一次连,会提示
The authenticity of host 'github.com' can't be established... Are you sure you want to continue (yes/no/[fingerprint])? - 输入
yes:千万别只按 Enter,要打yes再按 Enter。 - 成功标志:如果看到
Hi [你的用户名]! You've successfully authenticated...,那就大功告成了!
我有好几个密匙,怎么区分?
如果你按上面的方法创建了“第二个”密匙(比如叫 id_ed25519_second),你需要告诉系统什么时候用哪一个。
- 在
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,它的“锁”更精巧,不容易被暴力破解,是目前程序员圈子里的首选。
