使用 Gitlab API 添加 SSH 密钥时出现 Http 404 错误

Posted

技术标签:

【中文标题】使用 Gitlab API 添加 SSH 密钥时出现 Http 404 错误【英文标题】:Http 404 error when uing Gitlab API to add SSH key 【发布时间】:2015-08-22 02:02:49 【问题描述】:

我有一个有效的 user_id,还有管理员令牌(存储在 GITLAB_ADMIN_TOKEN 中)

但是当我运行以下 Python 来为用户 ID 添加 SSH 密钥时,我收到 404 错误。

# Add SSH Key
url = 'http://114.xx.xx.xx:8080/api/v3/users/' + str(user_id)+ '/keys?private_token=' + GITLAB_ADMIN_TOKEN
print url
values = 'id':user_id,
      'title':'mykey',
      'key':'ssh-rsa xxxxxxxxxxxxxxxxx ..... root@ubuntu'
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
print the_page

结果是: http://114.xx.xx.xx:8080/api/v3/users/30/keys?private_token=xxxxxx

回溯(最近一次通话最后): 文件“testgitlab.py”,第 61 行,在 响应 = urllib2.urlopen(req) 文件“/usr/lib/python2.7/urllib2.py”,第 127 行,在 urlopen return _opener.open(网址,数据,超时) 文件“/usr/lib/python2.7/urllib2.py”,第 410 行,打开 响应=方法(请求,响应) http_response 中的文件“/usr/lib/python2.7/urllib2.py”,第 523 行 'http', 请求, 响应, 代码, msg, hdrs) 文件“/usr/lib/python2.7/urllib2.py”,第 448 行,错误 返回 self._call_chain(*args) _call_chain 中的文件“/usr/lib/python2.7/urllib2.py”,第 382 行 结果 = 函数(*args) http_error_default 中的文件“/usr/lib/python2.7/urllib2.py”,第 531 行 引发 HTTPError(req.get_full_url(), 代码, msg, hdrs, fp) urllib2.HTTPError:HTTP 错误 404:未找到

【问题讨论】:

【参考方案1】:

我现在知道问题出在哪里了。 在我最初的实现中,我用

粘贴了密钥

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrTAR1MVs1juu1MuZ8C09CZpxm56hDzguRGuenmHez7Co9NQyx3GKLa5ksfdMNk+OBLVuf/fFZZ1ZoFGH9Cz/xNkxwtzjd6UiTt/6ECO9rClYK3LfX5RTv7a2O9zxhsudpofhIkUS0fYFmRlTi/htssbU5IC+U1i+xXHvfBChdLd2EasakGB89+Sw5t74cVyMiC8mRkcLxpCRI1BPEQd5FRZQr8piQxW2APcWnT7h18gY1F9qm50pq2PQgk7rQtkLMQKVVu30/95W7IBVfTMfklnDk3z0Dj4EcqzKYeeenwVn6YdC3fI5ZmLTpNhLlLwJPlBDQnUSIn8pBrmXfpPy7 root@ubuntu

但不应包含root@ubuntu。当我从我的2048-bit 密钥中删除它时,它现在可以工作了。

【讨论】:

以上是关于使用 Gitlab API 添加 SSH 密钥时出现 Http 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 ssh 密钥连接到 gitlab 项目

如何为同一主机的多个 gitlab 帐户使用多个 ssh 密钥[重复]

如何生成 SSH keys, 并在 Github 或 Gitlab 等上添加密钥

Gitlab设置ssh密钥详解

最简单的 Mac配置gitlab ssh密钥方法

Gitkraken 与 SSH 到 Gitlab