2022年12月26日 星期一

自行架設的Gitlab被鎖住解決辦法

先說明,這是"自行架設"的才能這樣做。如果是gitlab官方同時又是個體戶那百分之百是沒救了。

大概可以分成兩種方式去解。第一種是透過gitlab後台指令去修改密碼。第二種就是進入到管理網頁修改。這邊的狀況比較複雜,假設來讀這篇文章的人跟我一樣是接受整個gitlab server 的檔案,後續可以用Docker進行掛載。但是當初移交給你的人當初只有給你檔案,沒有移交administrator的密碼。

這邊需要釐清幾個名詞:

  1. username : 這是當初使用者設定的帳號名稱。不要跟id搞錯。
  2. ID : 這是一開始註冊的時候,gitlab server給你的流水號。通常大家不會記得這個號碼。root的編號就是1。
  3. email : 就是當初註冊的email
username跟ID比較容易搞亂。


1. 使用後台指令reset密碼

container起來以後,用以下指令:

gitlab-rake "gitlab:password:reset"

這邊沒有用到sudo是因為在container底下本來就是root了。如果是在單機版上,記得加上sudo。

後續就會有一連串問答。

如果已經知道username,那也可以直接用username進行:

sudo gitlab-rake "gitlab:password:reset[USERNAME]"

進行到這邊就會有一連串的密碼問答。想透過後gitlab console進行密碼更換也可以參考這篇文章

通常修改密碼的狀態下都是伴隨打錯密碼太多次造成block。或是LDAP跟localhost註冊相衝[註1]或是LDAP的檢查時機有誤[註2],都可能造成帳號鎖住,這狀況可看底下說明。


2. 使用後台指令把block狀態解除

首先把gitlab console打開:

sudo gitlab-rails console -e production

接下來可以用email解開

user = User.find_by(email: 'admin@local.host') user.unlock_access!

或是用id來解開

user = User.where(id: 1).first user.unlock_access!

如果覺得有where不好看,也可以用稍微優雅的方式

user = User.find(1) user.unlock_access!


或是用username來解開

user = User.find_by_username 'exampleuser' user.unlock_access!


其他事項1: 修改administator進入管理頁面

gitlab的administrator使用的ID是1,也就是用後台的方式把ID為1的密碼改掉。接下來到登錄頁面後使用"root",並且把剛剛修改的密碼打上就能進入管理頁面。


其他事項2: 如果因為被LDAP連結連錯而被鎖住

首先要先進入到管理頁面,把左邊的scrolling bar拉下來:

Overview -> users 

在右邊主欄位可以看到"blocked"的頁面。進入後可以看到被鎖住的使用者。點入後找到"identity"的tab,進去以後把gitalab連結上的credential刪除即可。

接下來回到原本user的管理頁面,該user最旁邊的"三點"選單裡面的"unlock"選項就會出現。

但這邊要記住,如果該使用者又帶有相同email的ldap進入,有可能會再度造成連結錯誤。所以建議有localhost帳號的使用者就不要再用ldap登錄。



註1. LDAP與本地端相衝問題

當初接到這個server檔案時,本來已經有用我自己的帳號註冊了一個username。但是後來實驗室有新增LDAP,這個LDAP的username如果也跟gitlab的username一樣,有可能就會直接被gitlab系統連結起來。這時候如果LDAP server有更新,有可能會對這邊造成影響。

註2. LDAP連結錯誤

gitlab檢查openLDAP的時候,只會確認"該使用者有無在LDAP名單中"。假設該使用者從LDAP中除名,那gitlab就會自動把該員鎖起來。以我自身狀況來看,就是本來我在LDAP中註冊了一個測試帳號並使用了跟local端gitlab帳號一樣的email,LDAP就自動幫我連結過去。結果我測試完畢後就把該帳號從LDAP移除。Gitlab偵測到我移除後,就直接把我的帳號鎖起來。這時候如果要處理,要回到管理頁面。指令目前沒有看到有人分享處理辦法。





references:

https://docs.gitlab.com/ee/security/unlock_user.html

https://docs.gitlab.com/ee/security/reset_user_password.html

https://docs.gitlab.com/ee/security/reset_user_password.html#reset-the-root-password

https://gitlab.com/gitlab-org/gitlab-foss/-/issues/13179

沒有留言:

張貼留言

iscsi 連線問題筆記

如果要進行umount但是出現target buzy sudo fuser -km 掛載點 sudo umount 掛載點 iSCSI重啟 sudo open-iscsi restart  掛載lun iscsiadm -m discovery -t sendtargets -p...