乐趣区

关于gitlab:gitlab-ssh无法clonesshkeygen加密算法问题

背景:

gitlab 比拟古老的一个版本8.5.8(twang2218/gitlab-ce-zh:8.5.8). 搭建形式能够参照:Kubernetes 1.20.5 装置 gitlab。其实都是基于 sameersbn 的文档搭建的,甚是古老!开启了 https and ssh 的形式(也有 http, 毕竟 on kubernetes. 作了端口的映射),https and http clone 的时候常常会呈现504.….. 也没有方法仓库都大几百 M ……

先不说他们更新麻烦,我在打包的时候 jenkins pipeline 根本都是 depth: 1 git clone –depth=1

    stages {stage("GetCode"){agent { label  "build01"}
            steps{
                script{println("下载代码 --> 分支:${env.branchName}")
                    checkout([$class: 'GitSCM', branches: [[name: "${env.branchName}"]],
                    doGenerateSubmoduleConfigurations: false,
                        extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
                    submoduleCfg: [],
                        userRemoteConfigs: [[credentialsId: 'xxxxx',
                        url: "${env.gitHttpURL}"]]])
                }
            }
        }

明天正好须要 clone 一个仓库,http and https 的这样 504 残害,正好筹备 ssh clone 一下 ……

gitlab ssh clone 仓库

生成 ssh 密钥对:

其实原本有密钥对的,这里伪装一下小白间接从头开始创立了:

[root@zhangpeng .ssh]# ssh-keygen

当然了也能够上面这样创立:

ssh-keygen -o -t rsa -b 4096 -C "xxxx"

上传公钥到 gitlab 服务器:

查看 id_rsa.pub 中的文件内容上传到 gitlab 的 ssh 密钥治理外面:

cat id_rsa.pub 

clone 仓库失败的经验

尝试 ssh clone 仓库, 当然了前提须要确定 用户有此仓库的操作权限 起码是拜访能力 clone…… 然而事实是 clone 失败 ……

尝试了网上很多的所谓解决方案无一例外都以失败告终 ……. 抱着打不过就躲的想法,先换一台服务器去尝试一下:
rocky8 server 一台如下:

[root@gitlab .ssh]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:J3pDUja1v0cWNy5qQLl6Xa1e2YI9oex3WZFsC0q5XlQ root@gitlab
The key's randomart image is:
+---[RSA 3072]----+
|          .      |
|         ...   E |
|        +o. . +.o|
|       o...+ ooB.|
|      . Soo =o*oo|
|       +.oo+oOoo+|
|      ..o..+*.=o+|
|       ....o..o+.|
|            .o . |
+----[SHA256]-----+

上传 pub 公钥到 gitlab 服务器:

持续尝试 clone,居然胜利了 ……..

git clone ssh://git@xxx.xxxx.com/xxxx/xxxx.git

我想比照一下两个服务器的 ssh 版本 or 加密算法?
rocky8

[root@gitlab .ssh]# ssh -V
OpenSSH_8.0p1, OpenSSL 1.1.1k  FIPS 25 Mar 2021

rocky9

ssh -V

ssh 版本是不一样 有小版本的区别,具体的差别还不分明 ……
~/.ssh 目录下文件看一下,肉眼可见 known_hosts 中两个零碎一个 ecdsa-sha2-nistp256 另外一个 ssh-ed25519. 这应该是加密算法吧?换个思路从新生成一个其余加密形式的密钥尝试一下?

先不明所以的新如何让 rocky9 生成一个 ecdsa-sha2-nistp256 的呢?偶尔看到了 https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

我能不能尝试一下批改一下 ed25519 参数尝试一下?rocky 9 先删除 .ssh 目录下所有文件(当然了应该备份一下,我这里就草根演示!)

ssh-keygen -t ecdsa -C "zhangpeng@zhangpeng.com"

想当然认为上传 id_ecdsa.pub 到 gitlab:

首先确认这是无效的,能够 clone 下来了:

看一下 know_host 依然是 ssh-ed25519。然而 git ssh 这里是解决了。具体违心还不晓得 ….. 不过我貌似前几天 update 了一下零碎 ….. 这里就记录一下吧,具体的起因 and 加密的算法有工夫去钻研一下!

退出移动版