使用git clone命令从GitLab上同步代码库时,如果使用SSH链接(如:git@gitlab.com:example/example.git),但是你的SSH key没有添加到GitLab的账号设置中,系统会报下面的错误:
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这时候就需要在本地创建SSH key,然后将生成的SSH key文件的内容添加到GitLab账号上去。创建SSH key的方法很简单。
生成SSH Key的过程如下:
1).首先打开linux服务器,输入命令:ls -al ~/.ssh,检查是否显示有id_rsa.pub或者id_dsa.pub存在,如果存在请直接跳至第3步。
2).在bash中输入ssh-keygen -t rsa -C ”yourEmail@example.com”,注意这个地方的邮箱地址地址替换成你自己的邮箱地址即可,在显示如下的输出后一直按回车即可:
生成的路径为/root/.ssh/ (为隐藏文件,生成ssh公钥和私钥对)
3).打开id_rsa.pub文件,并且复制全部内容。
4).打开GitLab账户,打开SSH Keys:
将刚刚复制的内容添加到Key的文本域中,然后点击Add key。
这样就添加了一个SSH key。
5).完成上面的步骤之后就可以使用ssh来连接GitLab,并进行相应的操作了。
本地配置多个ssh key
1 为公司生成一对秘钥ssh key
ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa
2 为github生成一对秘钥ssh key
ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/..sh/github-rsa
3 在~/.ssh目录下新建名称为config的文件(无后缀名)。用于配置多个不同的host使用不同的ssh key,内容如下:
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id-rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id-rsa
# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径
4 按照上面的步骤分别往gitlab和github上添加生成的公钥gitlab_id-rsa.pub和github_id-rsa.pub
5 OK,大功告成,再次执行git命令验证是不是已经不需要再次验证权限了。
6 再次查看~/..ssh目录下的文件,会有gitlab_id-rsa、gitlab_id-rsa.pub和github_id-rsa、github_id-rsa.pub四个文件
网友评论