Win11下如何启用SSH-Agent服务

查理谈科技 2024-05-07 15:23:18

今天在配置使用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# 

0 阅读:0

查理谈科技

简介:感谢大家的关注