对于经常跟代码打交道的朋友来说,小乌龟应该是老朋友了。

小乌龟默认使用的ssh客户端是自带的TortoisePLink.exe,这个客户端啥都好,就是有亿点不方便,每次重启电脑之后推送远程仓库都要输入一次私钥密码(我给私钥设了密码)。我想不用反复输入密码就可以一直用下去,最后找到一个方法是使用Windows自带的OpenSSH来作为ssh客户端。

换到OpenSSH有两个好处:

  1. 可以使用SSH-RSA格式的秘钥,不用转换格式就能直接用。而TortoisePLink.exe每次会调用Putty去做验证,这就还得单独把秘钥转换成putty的ppk格式,多少有些不方便
  2. 可以在重启之后保留秘钥的验证状态,说人话就是可以记住密码,不用每次开机都输一遍。当然这个有好有坏啊,毕竟多了便利性,舍弃了安全性

不方便的地方:

  1. 生成和管理秘钥要敲命令了,不能再像Putty那样有图形化界面了
  2. 重启之后无法清除秘钥的验证状态,如果被电脑别人冒用,可能会有一些权限方面的危险。而且长时间不打密码,你早晚会忘掉它的( ̄▽ ̄)/

现在电脑里一共有3个东西:系统原生的OpenSSH、Git小乌龟、Git For Windows

我不仅需要修改Git小乌龟的ssh客户端配置,还要连Git For Windows的也一起修改,因为虽然我平时小乌龟用的多,但有些别的软件,它不支持小乌龟,只支持Git For Windows,所以要一起修改了。

开始之前首先要安装OpenSSH,方法很简单,在“设置”,“应用”,“可选功能”,“添加可选功能”,输入“OpenSSH客户端”搜索并安装(注意不是服务端奥)。

接着我们打开cmd.exe,输入where ssh.exe来确认一下openssh是否安装到位了,如果显示C:\Windows\System32\OpenSSH\ssh.exe就代表OK了,我们复制这个路径,待会有用。

然后打开小乌龟的设置,切换到“网络”选项下面,然后右边就能看到“SSH Client”这个选项,把刚刚复制的路径粘贴到这里来:C:\Windows\System32\OpenSSH\ssh.exe,然后点击确定保存设置。

20230221124939

小乌龟的设置完了,接着是Git For Windows,同样蛮简单的,右键点击“此电脑/计算机/这台电脑/我的电脑”,“属性”,“高级系统设置”,“环境变量”,在系统变量区域里新建一个变量,名字叫GIT_SSH,值为刚刚复制的路径,好了之后大概是这样。

env

点击确定来保存关闭,这样就配置完毕了。接着我们需要加载一个密钥,如果你要生成一个新的密钥的话可以跟着下面的步骤进行,也可以跳过这一步。

在任意路径打开cmd.exe,输入ssh-keygen -t ras -b 4096来说生成一个新的秘钥,-t rsa意思是密钥类型为rsa-b 4096意思是密钥长度为4096位,建议最低2048,再低就不安全了,但也别太高,太高意义不大,像4096就很合适。

生成后就会问你把密钥存哪儿,要不要改个名字,默认是用户文件夹下的~/.ssh/id_rsa,我们直接按回车确定。接着会问你要不要给密钥加个密码,这样别人就算拿到你的密钥没有密码也还是用不了,我这里就添加一个密码了,然后重复一次密码。如果不想加密码直接按回车跳过就好。

生成好后把窗口叉掉,打开~/.ssh目录,id_rsaid_rsa.pub就是你的秘钥了,前者是私钥,后者是公钥。

有了密钥对之后,我们就直接开始加载密钥,在密钥所在的目录打开终端,输入ssh-agent,不出意外应该执行了但啥都不显示就退出了。如果显示unable to start ssh-agent service, error :1058则表示OpenSSH 验证服务没启动。我们使用Win+R,输入services.msc,然后找到OpenSSH Authentication Agent这个服务,设置为自动启动,然后顺手把这个服务手动启动一下就OK了。

然后回到命令行,输入ssh-add id_rsa,这里的id_rsa就是你私钥的文件名,当然也可能不是这个,输入后如果有密码会提示你输入密码,如果没有就直接加载成功了。之后我们再使用ssh-add -l命令,就可以看到我们的密钥指纹和文件名了,到这里密钥就加载完毕了,即使重启也不用重新输入密码。

如果需要撤销密钥的验证状态,可以使用ssh-add -d id_rsa.pub,这里的id_rsa.pub就是你公钥的文件名,如果没有公钥,也可以用ssh-add -D一键撤销所有的密钥。

到这里就已经配置完毕了,你就可以在任何地方使用命令行git push origin main之类的命令来进行推送和拉取了,而且就算重启也可以不用重新输入密码。