Gitlab: SSH-Keys管理(API方式:当前用户)

偏执的太偏执、 2023-02-28 04:23 118阅读 0赞

在这里插入图片描述
Gitlab中可以通过设定ssh-key进行免密push操作,同时Gitlab也提供了相应的Rest API进行操作,这篇文章将进行具体介绍对于当前用户的操作方式。

环境准备

docker-compose文件

  1. liumiaocn:gitlab liumiao$ cat docker-compose.yml
  2. version: '2'
  3. services:
  4. # Version Control service: Gitlab
  5. gitlab:
  6. image: gitlab/gitlab-ce:12.10.5-ce.0
  7. ports:
  8. - "32001:80"
  9. volumes:
  10. - ./log/:/var/log/gitlab
  11. - ./data/:/var/opt/gitlab
  12. - ./conf/:/etc/gitlab
  13. restart: "no"
  14. liumiaocn:gitlab liumiao$

事前准备

创建如下目录:

  1. liumiaocn:gitlab liumiao$ ls
  2. docker-compose.yml
  3. liumiaocn:gitlab liumiao$ mkdir -p log data conf
  4. liumiaocn:gitlab liumiao$ ls
  5. conf data docker-compose.yml log
  6. liumiaocn:gitlab liumiao$

启动

启动命令:docker-compose up -d

登录并创建apitoken

登录URL

  • http://localhost:32001

在这里插入图片描述
注:此处设定root用户密码,由于后续直接使用token进行用户创建,示例说明中不再直接需要使用root设定的密码。

创建api用的token

通过settings菜单或者直接使用如下URL,创建api用的token

  • http://localhost:32001/profile/personal\_access\_tokens

在这里插入图片描述

事前准备

添加名为liumiao的用户,也可通过界面操作进行,此步可以跳过

执行命令
access_token=“7F2jdsYyeDsuhGnyTvPz”
gitlab_url=“localhost:32001”
curl -X POST -H “PRIVATE-TOKEN: ${access_token}” http://$\{gitlab\_url\}/api/v4/users
-H ‘cache-control: no-cache’
-H ‘content-type: application/json’
-d ‘{ “email”: “liumiaocn@outlook.com”,
“username”: “liumiao”,
“password”: “12341234”,
“name”: “liumiao”,
“skip_confirmation”: “true”
}’

执行日志示例:

  1. liumiaocn:~ liumiao$ curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{ "email": "liumiaocn@outlook.com",
  2. > "username": "liumiao",
  3. > "password": "12341234",
  4. > "name": "liumiao",
  5. > "skip_confirmation": "true"
  6. > }' |jq .
  7. % Total % Received % Xferd Average Speed Time Time Time Current
  8. Dload Upload Total Spent Left Speed
  9. 100 898 100 759 100 139 1785 327 --:--:-- --:--:-- --:--:-- 2112
  10. {
  11. "id": 2,
  12. "name": "liumiao",
  13. "username": "liumiao",
  14. "state": "active",
  15. "avatar_url": "https://www.gravatar.com/avatar/95c1f7ff72d71b448592a335ba80fb64?s=80&d=identicon",
  16. "web_url": "http://2dba3d4f4dfa/liumiao",
  17. "created_at": "2020-07-19T21:35:27.312Z",
  18. "bio": null,
  19. "location": null,
  20. "public_email": "",
  21. "skype": "",
  22. "linkedin": "",
  23. "twitter": "",
  24. "website_url": "",
  25. "organization": null,
  26. "job_title": "",
  27. "work_information": null,
  28. "last_sign_in_at": null,
  29. "confirmed_at": "2020-07-19T21:35:27.148Z",
  30. "last_activity_on": null,
  31. "email": "liumiaocn@outlook.com",
  32. "theme_id": 1,
  33. "color_scheme_id": 1,
  34. "projects_limit": 100000,
  35. "current_sign_in_at": null,
  36. "identities": [],
  37. "can_create_group": true,
  38. "can_create_project": true,
  39. "two_factor_enabled": false,
  40. "external": false,
  41. "private_profile": false,
  42. "is_admin": false
  43. }
  44. liumiaocn:~ liumiao$

设定ssh-key的图形方式

通过GitLab的界面操作,可以很容易地设定ssh-key,首先登录之后选择用户菜单中的Settings
在这里插入图片描述
然后选择SSH Keys左侧菜单项即可通过界面方式对ssh-key进行操作
在这里插入图片描述

创建本地用户的ssh-key

  1. liumiaocn:~ liumiao$ ssh-keygen
  2. Generating public/private rsa key pair.
  3. Enter file in which to save the key (/Users/liumiao/.ssh/id_rsa):
  4. Enter passphrase (empty for no passphrase):
  5. Enter same passphrase again:
  6. Your identification has been saved in /Users/liumiao/.ssh/id_rsa.
  7. Your public key has been saved in /Users/liumiao/.ssh/id_rsa.pub.
  8. The key fingerprint is:
  9. SHA256:FgCQGZ5XL0dLvCYw3F34LQzXgR0bePHsNdGe94jPWXk liumiao@liumiaocn
  10. The key's randomart image is:
  11. +---[RSA 3072]----+
  12. | o*.ooooo.==+ ..|
  13. | .o.+..==.+ += o|
  14. | o .o. =* o. ooo|
  15. | . .oo.+ .. o+|
  16. | oS . ...+|
  17. | . . ..E|
  18. | o o.|
  19. | + |
  20. | |
  21. +----[SHA256]-----+
  22. liumiaocn:~ liumiao$

这样在当前用户的HOME下的.ssh目录中就会有如下rsa方式的公钥和私钥,注意设定的是公钥,私钥是需要我们自己妥善保管的,公钥是可以从私钥中取出来的,详细展开内容可以参看:

  • https://blog.csdn.net/liumiaocn/category_9573907.html

操作:添加用户ssh-key(当前用户)

使用user/keys可以添加当前指定用户的token,执行示例命令与日志如下所示

  1. liumiaocn:~ liumiao$ curl -X POST -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/user/keys -H 'cache-control: no-cache' -H 'content-type: application/json' -d '{"title": "ssh key for local mac os",
  2. "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9V0ynK5YE84hoeK8LonTw2zixdrSrbR8yuaK1tGuvWD/OZ/P/zDjLHmcJqrK7tB1pgbWAmne8hhXjgNPNHglPp+epU6rP+a3VfDNA6bmbeMQDs/8IW89lhHE0PhIG4zalntgx2sPlhmqVi0XXn77RFXF8h0kbGPIL/nXwvGXfx7GQBpCmhqioJX7kXTReEEdLA6Ec7LgYYZUTorNlZkw3D+beuezyHt+zE6ggpP3aDDigaeMXlf2yfdClpETCIure4vxvXBHBZt9dy54A+YJNcPgY49Pj4Z6C2KVqTS9kM+fQ1gHZsjP9vbObh0TmsV0Zffy0HXwayNqiIutuk65RdVxTCjdCiz/9Lwxza9P7PcJEmb6tW+me/QROKT1LsJH6gn59ufGiB+OsmBg9lK+CaG+CVi0WGDmPKlh/oJ+noGQGgr0NHxkBqJLTim1HCCS5rb2U+ynjtHSKEKZ5BMqxG4ci6WZOsJg/gedefHA9R5Xd3TJkGas+2P3nfjB5zJM= liumiao@liumiaocn",
  3. "expires_at": "2020-09-19T00:00:00.000Z"
  4. }' |jq .
  5. % Total % Received % Xferd Average Speed Time Time Time Current
  6. Dload Upload Total Spent Left Speed
  7. 100 1345 100 680 100 665 8607 8417 --:--:-- --:--:-- --:--:-- 17025
  8. {
  9. "id": 4,
  10. "title": "ssh key for local mac os",
  11. "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9V0ynK5YE84hoeK8LonTw2zixdrSrbR8yuaK1tGuvWD/OZ/P/zDjLHmcJqrK7tB1pgbWAmne8hhXjgNPNHglPp+epU6rP+a3VfDNA6bmbeMQDs/8IW89lhHE0PhIG4zalntgx2sPlhmqVi0XXn77RFXF8h0kbGPIL/nXwvGXfx7GQBpCmhqioJX7kXTReEEdLA6Ec7LgYYZUTorNlZkw3D+beuezyHt+zE6ggpP3aDDigaeMXlf2yfdClpETCIure4vxvXBHBZt9dy54A+YJNcPgY49Pj4Z6C2KVqTS9kM+fQ1gHZsjP9vbObh0TmsV0Zffy0HXwayNqiIutuk65RdVxTCjdCiz/9Lwxza9P7PcJEmb6tW+me/QROKT1LsJH6gn59ufGiB+OsmBg9lK+CaG+CVi0WGDmPKlh/oJ+noGQGgr0NHxkBqJLTim1HCCS5rb2U+ynjtHSKEKZ5BMqxG4ci6WZOsJg/gedefHA9R5Xd3TJkGas+2P3nfjB5zJM= liumiao@liumiaocn",
  12. "created_at": "2020-07-19T21:50:49.034Z",
  13. "expires_at": null
  14. }
  15. liumiaocn:~ liumiao$

结果确认:注意当前用户是root
在这里插入图片描述

操作: 查询用户ssh-key

方式1: 查询当前用户

使用/user/keys即可

  1. liumiaocn:~ liumiao$ curl -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/user/keys |jq .
  2. % Total % Received % Xferd Average Speed Time Time Time Current
  3. Dload Upload Total Spent Left Speed
  4. 100 682 100 682 0 0 13640 0 --:--:-- --:--:-- --:--:-- 13640
  5. [
  6. {
  7. "id": 4,
  8. "title": "ssh key for local mac os",
  9. "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9V0ynK5YE84hoeK8LonTw2zixdrSrbR8yuaK1tGuvWD/OZ/P/zDjLHmcJqrK7tB1pgbWAmne8hhXjgNPNHglPp+epU6rP+a3VfDNA6bmbeMQDs/8IW89lhHE0PhIG4zalntgx2sPlhmqVi0XXn77RFXF8h0kbGPIL/nXwvGXfx7GQBpCmhqioJX7kXTReEEdLA6Ec7LgYYZUTorNlZkw3D+beuezyHt+zE6ggpP3aDDigaeMXlf2yfdClpETCIure4vxvXBHBZt9dy54A+YJNcPgY49Pj4Z6C2KVqTS9kM+fQ1gHZsjP9vbObh0TmsV0Zffy0HXwayNqiIutuk65RdVxTCjdCiz/9Lwxza9P7PcJEmb6tW+me/QROKT1LsJH6gn59ufGiB+OsmBg9lK+CaG+CVi0WGDmPKlh/oJ+noGQGgr0NHxkBqJLTim1HCCS5rb2U+ynjtHSKEKZ5BMqxG4ci6WZOsJg/gedefHA9R5Xd3TJkGas+2P3nfjB5zJM= liumiao@liumiaocn",
  10. "created_at": "2020-07-19T21:50:49.034Z",
  11. "expires_at": null
  12. }
  13. ]
  14. liumiaocn:~ liumiao$

方式2: 查询指定用户ssh-key

使用/users/${userid}/keys可查询指定用户,比如:

  1. liumiaocn:~ liumiao$ curl -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/users/1/keys |jq .
  2. % Total % Received % Xferd Average Speed Time Time Time Current
  3. Dload Upload Total Spent Left Speed
  4. 100 682 100 682 0 0 8023 0 --:--:-- --:--:-- --:--:-- 8023
  5. [
  6. {
  7. "id": 4,
  8. "title": "ssh key for local mac os",
  9. "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC9V0ynK5YE84hoeK8LonTw2zixdrSrbR8yuaK1tGuvWD/OZ/P/zDjLHmcJqrK7tB1pgbWAmne8hhXjgNPNHglPp+epU6rP+a3VfDNA6bmbeMQDs/8IW89lhHE0PhIG4zalntgx2sPlhmqVi0XXn77RFXF8h0kbGPIL/nXwvGXfx7GQBpCmhqioJX7kXTReEEdLA6Ec7LgYYZUTorNlZkw3D+beuezyHt+zE6ggpP3aDDigaeMXlf2yfdClpETCIure4vxvXBHBZt9dy54A+YJNcPgY49Pj4Z6C2KVqTS9kM+fQ1gHZsjP9vbObh0TmsV0Zffy0HXwayNqiIutuk65RdVxTCjdCiz/9Lwxza9P7PcJEmb6tW+me/QROKT1LsJH6gn59ufGiB+OsmBg9lK+CaG+CVi0WGDmPKlh/oJ+noGQGgr0NHxkBqJLTim1HCCS5rb2U+ynjtHSKEKZ5BMqxG4ci6WZOsJg/gedefHA9R5Xd3TJkGas+2P3nfjB5zJM= liumiao@liumiaocn",
  10. "created_at": "2020-07-19T21:50:49.034Z",
  11. "expires_at": null
  12. }
  13. ]
  14. liumiaocn:~ liumiao$

注意:此处返回的key的id也是每次递增,从1开始,本文示例显示为4,说明抓取日志之前经过三次添加和删除的操作。

操作:删除用户ssh-key(当前用户)

操作日志如下所示:

  1. liumiaocn:~ liumiao$ keyid=4
  2. liumiaocn:~ liumiao$ curl -X DELETE -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/user/keys/${keyid}
  3. liumiaocn:~ liumiao$ echo $?
  4. 0
  5. liumiaocn:~ liumiao$

结果确认

  1. liumiaocn:~ liumiao$ curl -H "PRIVATE-TOKEN: ${access_token}" http://${gitlab_url}/api/v4/user/keys
  2. []liumiaocn:~ liumiao$

在这里插入图片描述

注意事项

本例中当前用户创建时指定了过期时间,但是结果并未显示(此选项为Optinal),具体问题后续继续确认。

发表评论

表情:
评论列表 (有 0 条评论,118人围观)

还没有评论,来说两句吧...

相关阅读