对于经常跟代码打交道的朋友来说,小乌龟应该是老朋友了。
小乌龟默认使用的ssh客户端是自带的TortoisePLink.exe
,这个客户端啥都好,就是有亿点不方便,每次重启电脑之后推送远程仓库都要输入一次私钥密码(我给私钥设了密码)。我想不用反复输入密码就可以一直用下去,最后找到一个方法是使用Windows自带的OpenSSH来作为ssh客户端。
换到OpenSSH有两个好处:
- 可以使用SSH-RSA格式的秘钥,不用转换格式就能直接用。而
TortoisePLink.exe
每次会调用Putty去做验证,这就还得单独把秘钥转换成putty的ppk格式,多少有些不方便 - 可以在重启之后保留秘钥的验证状态,说人话就是可以记住密码,不用每次开机都输一遍。当然这个有好有坏啊,毕竟多了便利性,舍弃了安全性
不方便的地方:
- 生成和管理秘钥要敲命令了,不能再像Putty那样有图形化界面了
- 重启之后无法清除秘钥的验证状态,如果被电脑别人冒用,可能会有一些权限方面的危险。而且长时间不打密码,你早晚会忘掉它的( ̄▽ ̄)/
现在电脑里一共有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
,然后点击确定保存设置。
小乌龟的设置完了,接着是Git For Windows,同样蛮简单的,右键点击“此电脑/计算机/这台电脑/我的电脑”,“属性”,“高级系统设置”,“环境变量”,在系统变量区域里新建一个变量,名字叫GIT_SSH
,值为刚刚复制的路径,好了之后大概是这样。
点击确定来保存关闭,这样就配置完毕了。接着我们需要加载一个密钥,如果你要生成一个新的密钥的话可以跟着下面的步骤进行,也可以跳过这一步。
在任意路径打开cmd.exe
,输入ssh-keygen -t ras -b 4096
来说生成一个新的秘钥,-t rsa
意思是密钥类型为rsa
,-b 4096
意思是密钥长度为4096位,建议最低2048,再低就不安全了,但也别太高,太高意义不大,像4096就很合适。
生成后就会问你把密钥存哪儿,要不要改个名字,默认是用户文件夹下的~/.ssh/id_rsa
,我们直接按回车确定。接着会问你要不要给密钥加个密码,这样别人就算拿到你的密钥没有密码也还是用不了,我这里就添加一个密码了,然后重复一次密码。如果不想加密码直接按回车跳过就好。
生成好后把窗口叉掉,打开~/.ssh
目录,id_rsa
和id_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
之类的命令来进行推送和拉取了,而且就算重启也可以不用重新输入密码。