先說明,這是"自行架設"的才能這樣做。如果是gitlab官方同時又是個體戶那百分之百是沒救了。
大概可以分成兩種方式去解。第一種是透過gitlab後台指令去修改密碼。第二種就是進入到管理網頁修改。這邊的狀況比較複雜,假設來讀這篇文章的人跟我一樣是接受整個gitlab server 的檔案,後續可以用Docker進行掛載。但是當初移交給你的人當初只有給你檔案,沒有移交administrator的密碼。
這邊需要釐清幾個名詞:
- username : 這是當初使用者設定的帳號名稱。不要跟id搞錯。
- ID : 這是一開始註冊的時候,gitlab server給你的流水號。通常大家不會記得這個號碼。root的編號就是1。
- email : 就是當初註冊的email
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
沒有留言:
張貼留言