查看git上Connecting to GitHub with SSH的文档后,解决方案如下:
检查 SSH keys
-
打开终端
-
输入
ls ~/.ssh
来查看 SSH keys 是否存在.
$ ls -al ~/.ssh
# Lists the files in your .ssh directory, if they exist
- 查看文件夹,是否你已经拥有一个 public SSH key. 通常GitHub支持的key会是以下文件之一
id_rsa.pub
id_ecdsa.pub
id_ed25519.pub
Tips: 如果你收到一个错误信息说 "~/.ssh" 目录不存在,那说明你没有匹配的 SSH key 在默认位置。下一步操作会建议并告诉你如何生成一个新的 SSH key。
生成 SSH key
关于 SSH key 的使用和生成建议。主要有两种选择:
- 如果你没有可用的 SSH 密钥对,或者不想使用现有的密钥,建议生成一个新的 SSH 密钥对。
- 如果你看到已经有一个可用的公钥和私钥对(例如 id_rsa.pub 和 id_rsa),你可以把这个密钥添加到 ssh-agent 中,然后使用它连接到 GitHub。
-
打开 Git Bash 终端
-
使用 ssh-keygen 命令生成密钥,其中邮箱改为你自己的
ssh-keygen -t ed25519 -C "[email protected]"
Note: 如果你使用旧系统不支持 Ed25519 算法, 那么使用:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
-
当系统提示你 "
Enter file in which to save the key
" 按回车接受默认的密钥保存路径 -
设置一个安全的密钥密码
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
直接回车表示不设置密码
将你的 SSH key 添加到 ssh-agent
在向 ssh-agent 添加一个新的 SSH key 之前,你需要检查是否已有现成的 SSH key,如无可用 key,生成一个新的 SSH key。
如果有 GitHub Desktop,也可以使用它避免手动管理 SSH key
- 打开一个管理员权限的 PowerShell 或 CMD 窗口,确保 ssh-agent 服务运行
# start the ssh-agent in the background
Get-Service -Name ssh-agent | Set-Service -StartupType Manual
Start-Service ssh-agent
- 在普通命令行窗口中,使用 ssh-add 命令,添加私钥文件
ssh-add /c/Users/YOU/.ssh/id_ed25519
- 在 GitHub 帐号设置中,添加对应的公钥内容
为你 GitHub 账户添加一个新的 SSH key
- 复制 SSH public key 内容,直接从 .pub 文件中读取
$ clip < ~/.ssh/id_ed25519.pub
# Copies the contents of the id_ed25519.pub file to your clipboard
Notes:
windows系统,右键id_rsa.pub
文件,使用记事本打开后复制里面的public key
- 在 GitHub 网站右上角个人头像-Settings 页面
-
选择 SSH and GPG keys 项
-
点击 New SSH key 按钮添加
-
为此密钥添加一个描述标签
-
选择此密钥的用途,一般选 authentication
-
在 Key 字段粘贴刚才复制的公钥内容
-
点击 Add SSH key 按钮完成添加
-
如需确认身份验证才能成功添加