密匙生成
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 就可以了。
每次都輸入一次密碼太麻煩了,如何記住密碼?
如果你覺得每次輸入密碼太麻煩,你可以在設置密鑰密碼時,不設置直接 RETURN (如果你覺得你電腦控制權不會被偷走)
不過..我想你應該是需要密碼的,畢竟我也是這樣建議的
不妨試試 ssh-add 命令。
通過 ssh-add ~/.ssh/id_ed25519 命令,將密鑰添加到 SSH 認證代理中,這樣就可以記住密碼了。
# 你也可以:設置1小時後自動過期
ssh-add -t 1h ~/.ssh/id_ed25519
如何看到是否已經添加了密鑰/都有什麼密鑰載入了自動驗證?
ssh-add -l
shit, 我想移除密鑰自動驗證,它幾乎做什麼都不會過問我密碼(這是廢話),讓我的操作及其危險。
ssh-add -D
完成。使用 ssh-add 需要注意的是
方便是因为本机已解锁 SSH 密钥,不等于仓库对所有人开放。
不要在不可信机器上长期挂着 ssh-add。
若希望更安全,可给密钥设密码 + 不用长期 ssh-add,每次手动输入。
Windows 用戶要確認 OpenSSH Authentication Agent 服務有啟動。否則照抄
ssh-add可能遇到agent not running。 (我不想寫Windows了,因為Windows開發體驗極差。我很多年沒有日常用Windows,所以寫不下去了)
它是 OpenSSH 提供的功能,而非 git。
這裡涉及一個 ssh-agent 功能,顧名思義 —— 「SSH 代理」,它負責管理你的密鑰,讓你在使用時無需每次都輸入密碼。
為什麼提一嘴這個?因為目前計算機發展,出現了很多「人工智慧智能體」叫作「AI Agent」,這裡的「ssh-agent」和「AI Agent」無關
为什么是 Ed25519?
简单说,它是目前最安全、最快、而且密匙最短的算法。相比老旧的 RSA,它的“锁”更精巧,不容易被暴力破解,是目前程序员圈子里的首选。
