Windows通过密钥访问github
介绍
在MacOS
及Linux
中,我通过SRA
密钥来访问Github
的,现在弄了Windows
电脑,记录一下怎么实现操作。
秘钥访问Github
Windows
秘钥访问Github
- 确定是否安装了
git
。
$ git version
git version 2.47.1.windows.1
如果没有安装,可以先安装git
。windows安装并使用git
。
- 查看并拷贝
RAS
公钥。秘钥的生产查看windows生成RAS密钥
$ cat .\mt_github_id_ed25519.pub | clip
- 在
Github
中添加公钥
登录Github
后,进入Settings
->SSH and GPG keys
->New SSH key
粘贴上公钥,然后取个便于区别密钥来源的名称就行了。
测试一下联通性。
$ ssh -T git@github.com
git@github.com: Permission denied (publickey).
这就是还没通,需要检查是否配置了,大概率是没有配置config
。
- 配置
~/.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
在 Linux
或 macOS
的终端中:
# 创建 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
文件,Linux
或macOS
中使用vi
或vim
编辑。
$ notepad $HOME\.ssh\config
会弹出编辑页面,这里有点儿奇怪,在编辑时下划线不会显示,不知道是不是我显示器的问题(显示器比较差)。
- 确认一下啊编辑器保存的内容
$ 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
。
- (可选)启动
SSH
代理并添加私钥
如果你为私钥设置了密码,每次使用 SSH
时都需要输入该密码。为了避免频繁输入密码,你可以使用 SSH
代理来缓存你的私钥。
启动 SSH
代理:
$ eval $(ssh-agent -s)
添加私钥到 SSH 代理:
$ ssh-add ~/.ssh/id_ed25519
或者,如果你使用的是 RSA 密钥:
$ ssh-add ~/.ssh/id_rsa
如果你有多个密钥,确保添加的是你为 GitHub
生成的私钥。
提示 只需要通过ssh-add
命令把需要的私钥添加到SSH
代理中即可。
- (可选)自动启动
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
中执行的。
思考
这个流程感觉也和Linux
和MacOS
上的差不多,只是在Windows
上有些命令不一样而已,大体思路还是一样的。