在服务器上配置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文件夹下看看:

ls -al

这里的github_key和gitlab_key前面必须是-rw-------,不能是-rw-rw-r--,否则后面会报错,把它变成-rw-------的方法是chmod 600 github_key:

chmod 600 github_key

========================================================================

今天(2024.3.11)在我的Windows电脑上配置在这一步出错了,因为上面的

ls -al

chmod 600 github_key

 在Windows上没有,所以我直接执行了下面的那句

ssh-agent bash

报错:

unable to start ssh-agent service, error :1058

 去查了一下,参考:Starting ssh-agent on Windows 10 fails: "unable to start ssh-agent service, error :1058" - Stack Overflow

首先你要在你的Windows上以管理员方式打开powershell

输入:

Get-Service ssh-agent
Get-Service ssh-agent | Select StartType
Get-Service -Name ssh-agent | Set-Service -StartupType Manual

========================================================================

之后在终端按下面命令执行:

ssh-agent bash
ssh-agent -s

切换到你的.ssh文件夹下,按照后面的做就行了,注意路径,linux和Windows那不一样,把linux路径改成Windows路径。

ssh-add ~/.ssh/github_key

ssh-add ./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文件?自动去识别。

后话了。 

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值