为git配置ssh的作用我就不过多描述了,配置成功之后,每次push的时候就不需要输入账号密码了。如果电脑中只有一个git账号,其实配置起来问题不大,基本上不会出现什么问题,我简单描述一下过程
一.单git账户时配置SSH
首先我们先将路径切换到.ssh路径下,键入以下指令
ssh-keygen -t rsa -C "你的git账户"
之后会出现如下提示
三个红色箭头的地方,直接回车即可,这时候会在文件夹中生成id_rsa,id_rsa.pub
使用文本编辑器打开id_rsa.pub,将其中的内容复制粘贴,放到git服务器添加SSH公钥的位置
然后我们键入以下指令
ssh -T git@gitlab.com
如果是github,gitee,或者公司自己的域名,@后写相应的域名即可;如果是没有域名,@后写相应的ip地址
二.多git账户时配置SSH
单git账户的情况配置简单,不会有什么问题,但是我们不可能只有一个git账户吧,有个人的git,有公司的git,所以大多数人会有多个git账号。和个人的配置起来有什么不一样的,我们来看
首先,还是进行公私钥对的生成,如果我们不指定名称,默认生成的就是id_rsa。多个账户时我们想用名称作区分,需要在上述的指令中加一个-f命令,如下
ssh-keygen -t rsa -C "你的git账户" -f "id_rsa_github"
结果如下
红色箭头地方依然回车,这样就在.ssh文件夹下生成了id_rsa_github和id_rsa_github.pub两个文件
当然,还有另一个方法:依然键入没有-f的指令,在三个箭头中第一个箭头的位置输入要生成的文件名,也是可以的。
将公钥添加到git服务器中,之后输入如下指令进行添加
指令:ssh-add id_rsa_github
结果:Identity added: id_rsa_github (123123)
之后再键入如下指令(以github.com为例,以自己的实际地址为准)
ssh -T git@github.com
但是设置后,依然失败,是因为ssh默认检验的文件是id_rsa,所以我们需要重新配置一下,在
.ssh文件夹中有一个config文件(如果没有,创建一个),配置如下
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
Host和HostName为域名或ip,PreferredAuthentications为publicky,IdentityFile 为私钥地址名
这样配置完之后,就OK了
三.问题
在配置的时候,遇到过各种奇怪的问题,分享下:
问题1:git@gitee.com: Permission denied (publickey)
描述:我在添加gitee.com的公钥时,执行ssh -T git@gitee.com的时候报了这个问题,后来发现是因为没有执行ssh-add id_rsa_gitee这步操作导致的
参考博客:https://www.jianshu.com/p/b2ff4e11568c
问题2:Error connecting to agent: No such file or directory
描述:执行问题1中的ssh-add指令时,报了这个问题,是因为ssh-agent没有开,需要以管理员身份执行以下指令
Set-Service ssh-agent -StartupType Manual
Start-Service ssh-agent
参考博客:https://blog.csdn.net/yihuajack/article/details/108849156