【GitHub】Windows10 和 WSL2 对 GitHub 进行 SSH 身份验证
1 远程仓库
参考文档: Link
远程 URL 是 Git 一种指示“代码存储位置”的绝佳方式。用户只能推送到两类 URL 地址:
- HTTPS URL,如
https://github.com/user/repo.git - SSH URL,如
git@github.com:user/repo.git
1.1 使用 HTTPS URL clone
HTTPS URL 在所有存储库上都可用,在命令行上使用 HTTPS URL 对远程仓库执行 git clone、git fetch、git pull 或 git push 时,Git 将要求你提供 GitHub 用户名和密码。
2.2 使用 SSH URL clone
SSH URL 通过 SSH(一种安全协议)提供 Git 仓库的访问权限。 若要使用这个 URL,必须在 PC 上生成 SSH 密钥对,并将公钥添加到你的 GitHub 帐户中。
如果不在GiHub 账户中添加公钥,则会在 git clone 的时候输出下面的报错信息。

2 Windows10 使用命令行进行身份验证
参考文档: Link
可以通过两种方式从命令行访问 GitHub 上的仓库:HTTPS 和 SSH,两者采用不同的身份验证,验证方法取决于 clone 仓库时选择的是 HTTPS 还是 SSH URL。
2.1 HTTPS
如果不使用 GitHub CLI 进行身份验证,则必须使用 personal access token。
2.1.1 管理个人访问令牌
参考文档: Link
具体配置参考上述文档,很少用到就不搞了。
2.2 SSH
- 在生成新的 SSH 密钥之前,检查本地计算机是否存在现有密钥
参考文档: Link
- 打开 Git Bash
- 输入
ls -al ~/.ssh
检查 .ssh 目录是否存在或者 .ssh 目录中是否已经有 SSH 公钥(文件后缀名为 .pub)。
- 生成新 SSH 密钥以用于身份验证,然后将其添加到 ssh-agent
参考文档: Link
-
以管理员身份运行 PowerShell
-
替换为自己的邮箱,创建新 SSH 密钥
ssh-keygen -t ed25519 -C "your_email@example.com"
按 Enter 键接受默认文件位置(若要更改密钥文件的名称,先输入默认文件位置,再将 id_ed25519 替换为自定义名称)→ 按 Enter 键不设置密码。

-
可以在这里
C:\Users\{username}\.ssh找到生成的密钥和公钥

-
确保 ssh-agent 正在运行
Get-Service -Name ssh-agent | Set-Service -StartupType Manual
Start-Service ssh-agent
- 将 SSH 密钥添加到 ssh-agent
ssh-add c:/Users/{username}/.ssh/id_ed25519

- 将 SSH 公钥添加到 GitHub 上的帐户
参考文档: Link
-
以管理员身份运行 PowerShell
-
复制 SSH 公钥
cat ~/.ssh/id_ed25519.pub
-
GitHub 的
Setting中找到SSH and GPG keys,点击New SSH key

-
Title起个名字,Key中填刚刚复制的公钥内容

- 测试 SSH 连接
ssh -T git@github.com
- 如果打印如下信息,即成功:
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access. - 如果出现连接超时:
ssh: connect to host github.com port 22: Connection timed out,则通过 HTTPS 端口使用 SSH
官方文档: Link
在 .ssh/config 文件中加入以下内容:
Host github.com
Hostname ssh.github.com
Port 443
User git
3 WSL2 使用命令行进行身份验证
前提是 Windows 已完成上述配置
- 使用 Windows 创建的密钥
cat /mnt/c/Users/{username}/.ssh/id_ed25519 >> id_windows
chmod 600 id_windows
要确保密钥文件的权限为 rw------- (600)

- 在后台启动 ssh 代理
eval "$(ssh-agent -s)"
- 将密钥添加到 ssh-agent
ssh-add ~/.ssh/id_windows
- 测试 SSH 连接
ssh -T git@github.com
918

被折叠的 条评论
为什么被折叠?



