今天在配置使用SSH 协议使用Git 的时候, 发现Windows 下执行ssh-agent 总是执行失败, 于是研究了一下, 把正确步骤记录下来, 防止忘记的同时,也方便其他人遇到这个问题时能快速解决。
一、 基本Git 配置在配置Git 时候, 第一步就是要配置用户名和邮箱, 这一点非常重要, 因为这关系着你提交代码时候, 在Github 或者Gitlab 上面显示的名字。 尤其是在使用Github 的时候, 有些人因为既有公司的Git 仓库,也有个人的Git 仓库, 名字设置很随意的话, 容易在代码Review 的时候尴尬不已。
语句:
git config --global user.name "Your Name"git config --global user.email "your.email@address"这里面,我们记得要配置好自己的名字, 如果是在WSL 或者DevContainer中搞开发, 这个语句也要执行一下。
在设置完之后,不妨使用下面的语句来检验一下:
git config --get user.namegit config --get user.email执行结果:
二、为Git 客户端正确配置SSH 协议从Git仓库中下载代码, 可以使用HTTPS 或者SSH, 我本人比较喜欢SSH , 因为都是可以通过命令行来操作, 不需要再打开浏览器进行验证等。 如果使用HTTPS, 可以配置Git Credential Manager。
在这里,以SSH 为例。
首先要产生SSH 私钥/公钥, 这个只要执行语句:
ssh-keygen -t ed25519 -C "your_email@example.com"这里注意, 最佳实践是, 一定要给私钥设置密码, 哪怕是特别简单的“123456”, 也会增强安全性。
密钥产生之后, 会产生两个文件,带.pub的是公钥, 一般需要放到Github 等SSH的服务器端。
可以使用 ssh -T 来验证到Github 的连接:
ssh -T git@github.com配置SSH-Agent下面,就要启动SSH-Agent ,把私钥添加到Agent 里面。
SSH-Agent 是什么呢? 实际上就是一个常驻内存的程序(占用内存非常少,所以不用担心), 当我们把我们的ssh 私钥交给ssh-agent 之后,以后每次和Github 交互,都是有SSH-Agent 为我们通信,交换密钥并建立SSH 连接, 如图所示:
首先,我们来看看我们个人目录下有那些key。
ls ~/.ssh我这里配置了Github 和Gitee, 其中Github的密钥是id_ed25519, 其实Github 和Gitee完全可以使用同一个密钥。
但是我在Win11 下第一次执行操作的时候, 却遇到了错误:
ssh-add $HOME\.ssh\id_ed25519错误信息:
这是SSH-Agent 服务没有启动吗? 检查一下:
Set-Service ssh-agent -StartupType Automatic结果是, ssh-agent 的权限问题。
先来安装一下SSH-Agent:
Get-Service ssh-agent这个执行的很快,
查看下SSH-Agent的启动情况:
Get-Service ssh-agent | Select StartType没有启动, 哇哇哇:
启动出错:
Get-Service -Name ssh-agent | Set-Service -StartupType Manual结果是权限问题:
反思一下,应该是我启动的PowerShell没有使用“管理员权限启动”, 新建一个PowerShell,用管理员权限:
这次设置成功了。 从命令行窗口的左上角也可以看出, 通过管理员权限启动的PowerShell, 窗口名称前面有“管理员”前缀。
OK, 下面可以愉快的添加SSH Key 了:
另外一种设置SSH-Agent服务的方法是, 使用Windows 的服务窗口,找到OpenSSH,然后设置自动启动即可:
现在, 我们已经完整的在Windows下配置好了通过SSH 协议的Git 客户端。
但是, 如果我们想在Windows下的WSL 里面配置开发环境, SSH 密钥又该如何配置呢?
#SSH#