在服务器上配置GitHub和GitLab的SSH
2023.11.24
今天突然想把GitHub也配置在服务器上,之前配置了一个Gitlab的SSH在服务器上,过了好久了,忘了怎么配的了。今天重新回忆记录一下。
题外话:
我在想服务器上配置了两个仓库,一个GitHub的一个GitLab的,那我用的时候用哪个呢?怎么切换?找了半天的资料,发现大部分给的教程都是教你怎么去同时配置GitHub和GitLab的,我想要的切换的方法始终没有出现。
后来我发现,woc是我的问题,根本就不需要切换。配置好了直接用就完事,需要GitHub的仓库就
git remote add origin
是GitHub地址,比如:git@github.com:sjtu-jhw/nougat.git。而且我们实际上不这么用,我们一般会在GitHub上先新建个空的repository,然后从GitHub仓库拉到本地,这样就自动建立了我们服务器和和GitHub仓库的联系了。
GitLab和GitHub一样的,我们在GitLab上建一个空repository,拉到本地,就自动建立了服务器和GitLab仓库的联系了。
之所以要配SSH是因为你要能拉取,要不然你拉取都做不到。出现如下的错误:
好的,进入正题,所以问题就变成了如何配置GitHub和GitLab的SSH的问题了。相关的好文章有很多,我这里归纳一下我的做法。
1. 生成ssh key
分别生成github和gitlab的ssh。
ssh-keygen -t rsa -b 4096 -f ~/.ssh/gitlab_key
ssh-keygen -t rsa -b 4096 -f ~/.ssh/github_key
一路回车,生成文件如下:
2. 将公钥加到GitHub和GitLab对应的位置
公钥就是以.pub结尾的文件
GitHub:
复制粘贴到下面:
GitLab:
3. 服务器端的一些配置
先去.ssh文件夹下看看:
这里的github_key和gitlab_key前面必须是-rw-------,不能是-rw-rw-r--,否则后面会报错,把它变成-rw-------的方法是chmod 600 github_key:
之后在终端按下面命令执行:
ssh-agent bash
ssh-agent -s
ssh-add ~/.ssh/github_key
ssh-add ~/.ssh/gitlab_key
4. 测试一下通了没有
ssh -T git@github.com
这个地方我出现了个bug,第一次试没通?!然后搜了一下[1],解决了。
GitLab通了没好像没有直接的命令?
可以在GitLab上新建个text的库:
在服务器:
git clone git@git.acemap.cn:jihuawei/test.git
看看下载下来没有,下载下来了,ok,通了。
2023.11.27
今天从github上clone项目突然就不行了。。。报错说是
git@github.com: 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,github_key啊,git_labkey啊,还有id_rsa等等,应该是重启之后找不到github用哪个key了。
参考[2],我首先测试连上github没(必然没有)
ssh -T git@github.com
又看了下服务器上有没有ssh
ssh-add -l
说是agent没有identities,ok,把github_key加上去就ok了。
ssh-add ~/.ssh/github_key
测试一下连上GitHub没
ssh -T git@github.com
通了,下载成功了。
应该有其他更好的配置方法,比如config文件?自动去识别。
后话了。