Skip to content

Windows通过密钥访问github

约 945 字大约 3 分钟

WindowsgitGithub

2025-01-08

介绍

MacOSLinux中,我通过SRA密钥来访问Github的,现在弄了Windows电脑,记录一下怎么实现操作。

秘钥访问Github

Windows秘钥访问Github

  1. 确定是否安装了git
$ git version
git version 2.47.1.windows.1

如果没有安装,可以先安装gitwindows安装并使用git

  1. 查看并拷贝RAS公钥。秘钥的生产查看windows生成RAS密钥
$ cat .\mt_github_id_ed25519.pub | clip
  1. Github中添加公钥

登录Github后,进入Settings->SSH and GPG keys->New SSH key粘贴上公钥,然后取个便于区别密钥来源的名称就行了。

测试一下联通性。

$ ssh -T git@github.com
git@github.com: Permission denied (publickey).

这就是还没通,需要检查是否配置了,大概率是没有配置config

  1. 配置~/.ssh/config文件。
$ ls


    目录: C:\Users\matia\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2025/1/7     23:17                MT
-a----          2025/1/7     22:46            935 known_hosts

没有config文件需要先创建文件。

.ssh目录下创建config文件。

# 创建 config 文件
New-Item -Path $HOME\.ssh\config -ItemType File

LinuxmacOS 的终端中:

# 创建 config 文件
touch ~/.ssh/config

注意 这个创建文件和Linux区别还是挺大的。

创建config文件

New-Item -Path $HOME\.ssh\config -ItemType File


    目录: C:\Users\matia\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2025/1/8      0:10              0 config

查看.ssh文件夹

$ ls


    目录: C:\Users\matia\.ssh


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2025/1/7     23:17                MT
-a----          2025/1/8      0:10              0 config
-a----          2025/1/7     22:46            935 known_hosts

Windows中使用notepad编辑config文件,LinuxmacOS中使用vivim编辑。

$ notepad $HOME\.ssh\config

会弹出编辑页面,这里有点儿奇怪,在编辑时下划线不会显示,不知道是不是我显示器的问题(显示器比较差)。

  1. 确认一下啊编辑器保存的内容
$ cat config
# Github
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/MT/id_ed25519/mt_github_id_ed25519

注意 IdentityFile的路径是Windows中保存了对应私钥的路径。还有就是这里使用了默认端口,所以没有写,如果使用其他端口需要配置一下端口。

再次测试连通性

$ ssh -T git@github.com
Hi matiastang! You've successfully authenticated, but GitHub does not provide shell access.

这就表面,我们通过RAS密钥成功连接了Github

  1. (可选)启动 SSH 代理并添加私钥

如果你为私钥设置了密码,每次使用 SSH 时都需要输入该密码。为了避免频繁输入密码,你可以使用 SSH 代理来缓存你的私钥。

启动 SSH 代理:

$ eval $(ssh-agent -s)

添加私钥到 SSH 代理:

$ ssh-add ~/.ssh/id_ed25519

或者,如果你使用的是 RSA 密钥:

$ ssh-add ~/.ssh/id_rsa

如果你有多个密钥,确保添加的是你为 GitHub 生成的私钥。

提示 只需要通过ssh-add命令把需要的私钥添加到SSH代理中即可。

  1. (可选)自动启动 SSH 代理

你可以通过修改 .bashrc.zshrc 文件(取决于你使用的 Shell),使 SSH 代理在每次打开终端时自动启动。

示例(.bashrc.zshrc):

# 启动 SSH 代理
if [ -z "$SSH_AUTH_SOCK" ]; then
  eval "$(ssh-agent -s)"
  ssh-add ~/.ssh/id_ed25519
fi

提示 注意就是让 SSH 代理自动启动,这里是每次打开终端时都会启动。也可以写成一个脚本文件,配置脚本文件在启动时自动执行,反正只要能执行 SSH 代理启动命令并添加私钥即可,方法挺多。

注意 前面所有的命令均在Windows PowerShell中执行的。

思考

这个流程感觉也和LinuxMacOS上的差不多,只是在Windows上有些命令不一样而已,大体思路还是一样的。

参考

gitwindows安装并使用gitwindows生成RAS密钥