背景:
gitlab 比較古老的一個(gè)版本8.5.8(twang2218/gitlab-ce-zh:8.5.8).搭建方式可以參照:Kubernetes 1.20.5 安裝gitlab。其實(shí)都是基于sameersbn的文檔搭建的,甚是古老!開啟了https and ssh的方式(也有http,畢竟on kubernetes.作了端口的映射),https and http clone的時(shí)候經(jīng)常會(huì)出現(xiàn)504......也沒有辦法倉(cāng)庫(kù)都大幾百M(fèi)......
先不說他們更新麻煩, 我在打包的時(shí)候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一個(gè)倉(cāng)庫(kù),http and https的這樣504摧殘,正好準(zhǔn)備ssh clone 一下......
gitlab ssh clone 倉(cāng)庫(kù)
生成ssh密鑰對(duì):
其實(shí)本來有密鑰對(duì)的,這里假裝一下小白直接從頭開始創(chuàng)建了:
[root@zhangpeng .ssh]# ssh-keygen當(dāng)然了也可以下面這樣創(chuàng)建:
ssh-keygen -o -t rsa -b 4096 -C "xxxx"上傳公鑰到gitlab服務(wù)器:
查看id_rsa.pub 中的文件內(nèi)容上傳到gitlab的ssh密鑰管理里面:
cat id_rsa.pub clone倉(cāng)庫(kù)失敗的經(jīng)歷
嘗試ssh clone 倉(cāng)庫(kù),當(dāng)然了前提需要確定用戶有此倉(cāng)庫(kù)的操作權(quán)限起碼是訪問才能clone......但是現(xiàn)實(shí)是clone失敗......
嘗試了網(wǎng)上很多的所謂解決方案無一例外都以失敗告終.......抱著打不過就躲的想法,先換一臺(tái)服務(wù)器去嘗試一下:
rocky8 server 一臺(tái)如下:
[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@gitlabThe 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服務(wù)器:
繼續(xù)嘗試clone,竟然成功了........
git clone ssh://git@xxx.xxxx.com/xxxx/xxxx.git我想對(duì)比一下兩個(gè)服務(wù)器的ssh 版本 or 加密算法?
rocky8
[root@gitlab .ssh]# ssh -VOpenSSH_8.0p1, OpenSSL 1.1.1k FIPS 25 Mar 2021rocky9
ssh -Vssh版本是不一樣 有小版本的區(qū)別,具體的差異還不清楚......
~/.ssh目錄下文件看一下,肉眼可見known_hosts 中兩個(gè)系統(tǒng)一個(gè)ecdsa-sha2-nistp256 另外一個(gè)ssh-ed25519.這應(yīng)該是加密算法吧?換個(gè)思路重新生成一個(gè)其他加密方式的密鑰嘗試一下?
先不明所以的新如何讓rocky9 生成一個(gè)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參數(shù)嘗試一下?rocky 9先刪除 .ssh目錄下所有文件(當(dāng)然了應(yīng)該備份一下,我這里就草根演示!)
ssh-keygen -t ecdsa -C "zhangpeng@zhangpeng.com"想當(dāng)然以為上傳id_ecdsa.pub到gitlab:
首先確認(rèn)這是有效的,可以clone下來了:
看一下know_host仍然是ssh-ed25519。但是git ssh這里是解決了。具體愿意還不知道.....不過我貌似前幾天update了一下系統(tǒng).....這里就記錄一下吧,具體的原因 and加密的算法有時(shí)間去研究一下!
關(guān)鍵詞:







