一、背景

当员工离职后,管理员冻结该员工的所有系统账号,包括本文提及的gitlab系统。

跟阿里云的ak/sk类似,如果你在客户端使用某个员工创建的ak/sk,当那个员工的账户被封禁之后,会导致客户端访问出错。

本文也是因为冻结了gitlab用户,其添加的ssh key配置在某个Linux机器上,导致git客户端拉取代码异常。

gitlab添加其他账号_ssh

二、错误信息:Your account has been blocked

GitLab: Your account has been blocked.

GitLab: Your account has been blocked.                                                                                                                    
  fatal: The remote end hung up unexpectedly

因为用户被冻结了,而我使用gitlab api接口尝试解冻用户,报错 error:“405 Not Allowed”。

也就是说git工程下的用户,如果被冻结了,原先添加的ssh key也随着失效。

三、错误信息:The project you were looking for could not be found

GitLab: The project you were looking for could not be found. 用户没有对应git工程的权限错误,你需要把用户添加至工程的member列表。

GitLab: The project you were looking for could not be found.                                                                                              
  fatal: The remote end hung up unexpectedly

gitlab添加其他账号_运维_02


gitlab添加其他账号_运维_03

四、解决办法

既然被冻结用户的ssh key无法使用,而且不能解冻用户,那么我们只好再生成一对ssh key,添加在项目的成员用户下。

注意:用户必须是项目的成员,否则会出现上文提及的错误。

生成ssh密钥对

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_php -C “php_5.5”

因为~/.ssh目录下已存在id_rsa和id_rsa.pub,所以这里需要与之区分,使用-f参数指定文件名。

  • 新增前

gitlab添加其他账号_gitlab添加其他账号_04

  • 新增后

gitlab添加其他账号_gitlab_05

五、总结

可能有人会问,为什么要额外新增一对ssh密钥对?可不可以直接使用原先的密钥对?
其实是可以,但是由于被冻结用户已添加了旧的ssh密钥对,所以gitlab并不允许你重复添加。

被冻结的用户不能被解冻,否则可以进入gitlab,把旧的ssh公钥删除。

不能把旧的ssh公钥删除,又不允许别的正常用户添加该ssh公钥。这就意味着,旧的ssh密钥对无法使用了。所以,我们才选择新增一对ssh密钥对。