Gitlab CI使用ed25519私钥

时间:2017-06-29 10:30:47

标签: ssh gitlab gitlab-ci

我正在尝试在远程服务器上的Gitlab CI中做一些事情。当使用RSA密钥时,一切正常,但当我尝试使用ED25519密钥时,我卡住了:

Running with gitlab-ci-multi-runner 9.3.0 (3df822b)
  on Internal Runner (079281fd)
Using Docker executor with image 1drop/docker:git ...
Using docker image sha256:b9cf0ca386341048f8696d950123e20b5d6583c190f266aacb25b6d3d4736028 for predefined container...
Pulling docker image 1drop/docker:git ...
Using docker image 1drop/docker:git ID=sha256:966d107d59806ab1a3aa2229618858b5141e2c7bb183dd9f4dfaafdca4d51774 for build container...
Running on runner-079281fd-project-207-concurrent-0 via srv1...
Fetching changes...
$ eval $(ssh-agent -s)
Agent pid 17
$ ssh-add <(echo "$SSH_PRIVATE_KEY"| base64 -d)
Enter passphrase for /dev/fd/63: ERROR: Job failed: exit code 1

正如您所看到的,如果Gitlab将SSH_PRIVATE_KEY变量注入运行时会出现问题,我已经尝试使用base64对ed25519密钥进行编码。
密钥的内容很好,我可以输出它并在本地测试它的工作原理。此外,如果我将常规RSA密钥放入SSH_PRIVATE_KEY变量,它可以正常工作。但是在某些客户服务器上我需要使用ed25519并且我不断收到这个“输入密码”的东西,我不知道为什么。

我是否需要安装一些库才能使其正常工作?我的ssh模块说它可以执行ed25519键。

1 个答案:

答案 0 :(得分:3)

文档已更新。见https://docs.gitlab.com/ce/ci/ssh_keys/README.html

  ##
  ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
  ## We're using tr to fix line endings which makes ed25519 keys work
  ## without extra base64 encoding.
  ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
  ##
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null

使用此命令对我有用。