Gitlab API添加SSH密钥

时间:2015-09-01 12:46:22

标签: ssh gitlab openssh

首先,我开始非常绝望了这个(已经工作了大约一个星期,没有任何运气)。 Gitlab的论坛根本没有回答,所以我希望你们能和我一起承担这个。

我在通过API向我的gitlab服务器添加SSH密钥时遇到了问题(通过网页运行良好)。

Gitlab信息: Gitlab Information

我遇到了this issuewhich was fixed here),这与“错误的”openssh实现有关。他们已经在里程碑7.10中解决了这个问题。唯一的事情......我的服务器安装了openssh 6.6:

OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3, OpenSSL 1.0.1f 6 Jan 2014

现在,我不知道该修复是否向后兼容,但可能更好。

此外,日志不会显示任何警告或错误。 / tmp / gitlab_key *文件在服务器上生成: output of /tmp/gitlab_key*

我面临的问题是gitlab 无法通过API创建指纹。这是我从API获得的响应:

{
    "message": {
        "fingerprint": ["cannot be generated"]
    }
}

所以现在我不知道问题是什么。

,我一直在努力解决这个问题近一个星期了,所以我真的希望能解决他的问题。

-just for record,here's the script我用来通过API添加ssh-key

3 个答案:

答案 0 :(得分:3)

id_rsa.pub是base64编码文件,它包含“+”字符

带有application / x-www-form-urlencoded的http帖子,需要对其内容进行编码,防止“+”转换为“”(空格键)

尝试

curl --data-urlencode "key=$key_pub" --data-urlencode "title=$hostname" \
http://gitlabserver/api/v3/user/keys?private_token=$Token

请参阅:this

答案 1 :(得分:3)

改进@ Mathlight的回答以下代码片段将公共ssh密钥上传到gitlab.com

curl -X POST -F "private_token=${GITLAB_TOKEN}" -F "title=$(hostname)" -F "key=$(cat ~/.ssh/id_rsa.pub)" "https://gitlab.com/api/v3/user/keys"

答案 2 :(得分:1)

OP

与此同时,我已将服务器更新到版本8.8并稍微更改了curl代码,现在它的工作方式就像魅力一样:

curl -X POST -F "private_token=${userToken}" -F "title=${sshName}" -F "key=${sshKey}" "${gitServer}/user/keys"

以防万一将来需要这个......