一個很簡單的問題,讓我整整搞了好幾個小時,總是在細節上面犯迷糊,所以,決定把這個記錄下來。
第一步
重新生成GitHub和gitlab對應的公/密鑰
ssh-keygen -t rsa -C “你的gitlab郵箱” -f ~/.ssh/id_rsa_gitlab ssh-keygen -t rsa -C “注冊 github 賬戶的郵箱”
其實,如果之前已經有GitHub對應的公/密鑰,就不用重新生成了(沒試過,我這邊是重新生成的)
然后,進入 ~/.ssh
目錄里面應該可以看到4個文件,這四個文件分別對應gitlab和github的公私鑰,分別將gitlab和github的公鑰配置到github和你公司的gitlab的ssh上。
第二步
把專用密鑰添加到ssh-agent的高速緩存中
ssh-agent bash ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/id_rsa_gitlab
語法:
ssh-add [-cDdLlXx] [-t life] [file...]ssh-add -s pkcs11ssh-add -e pkcs11
選項
-D:刪除ssh-agent中的所有密鑰. -d:從ssh-agent中的刪除密鑰 -e pkcs11:刪除PKCS#11共享庫pkcs1提供的鑰匙。 -s pkcs11:添加PKCS#11共享庫pkcs1提供的鑰匙。 -L:顯示ssh-agent中的公鑰 -l:顯示ssh-agent中的密鑰 -t life:對加載的密鑰設置超時時間,超時ssh-agent將自動卸載密鑰 -X:對ssh-agent進行解鎖 -x:對ssh-agent進行加鎖
第三步
在.ssh目錄下創建一個config文件,寫入以下內容
# default Host github.com HostName github.com User github用戶名 IdentityFile ~/.ssh/id_rsa Host 你公司的代碼倉庫地址,可以是局域網地址 HostName gitlab.com User gitlab用戶名 #port 20 IdentityFile ~/.ssh/id_rsa_gitlab
第四步
測試:
#測試GitHub是否鏈接成功 ssh -T git@github.com Hi XXX! You've successfully authenticated, but GitHub does not provide shell access. #表示鏈接成功 #測試gitlab是否鏈接成功 ssh -T git@gitlab.com Hi XXX! You've successfully authenticated, but GitHub does not provide shell access. #表示鏈接成功
注意:重點來了,我在這兒停了好幾個小時,這里的 ssh-T git@gitlab.com
只是個測試的命令樣例,具體的 git@gitlab.com
應該換成你們公司的gitlab地址, 重要的事情說三遍!!!
具體的 git@gitlab.com
應該換成你們公司的gitlab地址,
具體的 git@gitlab.com
應該換成你們公司的gitlab地址,
具體的 git@gitlab.com
應該換成你們公司的gitlab地址,
如果出現錯誤,可以使用 ssh-v git@gitlab.com
調試