今天在腳本服務器上拉取代碼,突然發現拉不了代碼了,提示:
GitLab: Your account has been blocked.
fatal: Could not read from remote repository.
原因是當時在Linux 上代碼拉取,使用的是前同事的賬號配置的,這幾天他離職了,導致我使用他的賬號信息拉取代碼失敗。
在網上找了一堆解決方案,都解決不了我的問題,反而引入了新的問題,一團糟糕。
然后我就想,我就用最原始的方式,給這台服務器配上我自己賬號的拉代碼權限不就行了。
然后就找到了如何在linux服務器上配置Git的教程,很快就完美的解決了問題。
步驟如下:
Step 1. git config --global user.name "****" ****替換為自己的用戶名,是GitLab的登錄用戶名;
Step 2. git config --global user.email xxx@***.com,完成1~2步可以使用"cat ~/.gitconfig"查看設置是否生效
Step 3. cd ~/.ssh,如果目錄下有文件id_rsa.pub 或 id_dsa.pub,可以手動編輯成自己的sshkey,也可以使用步驟4的命令,生成新的public key;
為了保險起見,還是先備份一下原來的文件: cp id_rsa.pub id_rsa1.pub cp id_rsa id_rsa1
然后再刪除這兩個文件:
rm id_rsa
rm id_rsa.pub
Step 4. ssh-keygen -t rsa -C "xxx@.com" -- 生成新的public key,xxx@.com對應 .gitconfig文件中的email參數值;
注意,如果沒有執行第三步里面的刪除原文件的操作,這一步可能不會順利執行成功, 需要指定其他文件名才能生成。
因為這個成功過程依賴郵箱參數,所以並不能通過改原來的 id_rsa.pub 里面的郵件名就能成功更換賬號。
Step 5. id_rsa.pub文件內容就是SSH key,將文件里面的信息復制到GitLab的Add an SSH key頁面,新增一個Keys,Title中可以為該key設置一個別名。
Step 6. chmod 700 id_rsa,更改文件的權限,否則在git clone的時候會報“Permissions 0664 for '*******/.ssh/id_rsa' are too open.”的錯;
這樣就完成了。
最后嘗試一下拉代碼,可以成功拉取到 master 分支的代碼了。
不過,我之前因為嘗試網上的其他方案,把一個git 倉庫里面的配置弄亂了,拉取不成功,不太好搞,然后我就直接 刪除了服務器上整個git目錄,然后再git clone 遠程代碼下來。
rm -rf xxx/projects/xxx
git clone git@xxx.git
因為我這個倉庫當時是沒有程序在執行的,所以沒關系,如果有在線服務正在運行,還是嘗試恢復剛才錯誤的配置吧。
一點點小小的經驗,希望能幫到有需要的人。