今天使用gitlab拉取代码突然提示 [email protected]: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
以为是ssh公钥没有配置好,遂又进行了一番配置,实际上并不是这个问题造成的,但还是想记录一下步骤,以免下次配置时又是一番搜索
1、如果已经安装过git并且进行过git全局设置,需要清除
查看是否进行过全局设置 git config --global --list
,如果已经设置过会显示你的邮箱和名字
$ git config --global --list
core.autocrlf=false
core.askpass=
credential.https://gitee.com.provider=generic
safe.directory=D:/project/biotemed
safe.directory=D:/project/visual-list
safe.directory=D:/WebProject/vue3-demo
url.https://.insteadof=git://
[email protected]
user.name=xxx
清除设置
$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的邮箱"
2、生成新的ssh keys
找到.ssh文件夹,一般都是在C盘里,C:\Users\Administrator.ssh,打开bash终端,输入以下命令生成密钥文件
$ cd C:\Users\Administrator\.ssh
// 1.gitlab
$ ssh-keygen -t rsa -C "你的gitlab邮箱" -f id_rsa_gitlab -C "GitlabAccount"
// 1.gitee
$ ssh-keygen -t rsa -C "你的gitee邮箱" -f id_rsa_gitee -C "GiteeAccount"
期间会要求输入密码,不用输入,直接敲三下回车即可
生成之后.ssh文件夹下会有中间四个文件
然后创建config文件,注意没有后缀名
// 把第一行和第二行修改成自己公司的gitlab地址
# gitlab
Host gitlab.xxxx.com
HostName gitlab.xxxx.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitlab
User git
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
User git
3、把对应的公钥放到gitlab和gitee上
gitlab:
找到 id_rsa_gitlab.pub 文件,打开复制其中内容,然后粘贴到gitlab上添加SSH密钥
gitee:
找到 id_rsa_gitee.pub 文件,打开复制其中内容,然后粘贴到gitee上添加SSH密钥,gitee点击确认后需要输入密码
4、测试
Gitee 测试
$ ssh -T [email protected]
$ ssh -T git@gitee.com
Warning: Permanently added the ECDSA host key for IP address '180.97.125.228' to the list of known hosts.
Hi fengmi! You've successfully authenticated, but GITEE.COM does not provide shell access.
显示successfully,即配置成功
GitLab 测试
[email protected] 是gitlab的仓库地址
$ ssh -T [email protected]
显示welcome to gitlab,即配置成功
另外
我这里测试gitlab 提示,并没有成功,但是不影响使用http的方式,有时间遇到gitlab提示Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
,也有可能是使用ssh方式拉取的,换成http就可使用
Administrator@DESKTOP-7CIE2UQ MINGW64 ~/.ssh
$ ssh -T git@git.xxxx.com
ssh: Could not resolve hostname git.xxxx.com: Name or service not known