2015-09-01 4 views
0

Прежде всего, я начинаю очень отчаянно беспокоиться об этом (работал над этим примерно неделю, без всякой удачи). На форумах Gitlab вообще не отвечал, поэтому я надеюсь, что вы, ребята, вынесете это со мной.Gitlab API добавить SSH-ключ

У меня проблемы с добавлением ключа SSH на мой сервер gitlab через API (он хорошо работает через веб-страницу).

Gitlab информация: Gitlab Information

я наткнулся на this issue (which 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"] 
    } 
} 

Так что прямо сейчас я не знаю, в чем проблема. Я боролся с этим почти неделю, поэтому я очень надеюсь, что его проблема может быть исправлена.

-Только для записи, here's the script я использую, чтобы добавить SSH-ключ корыта API

+0

Я не вижу здесь никаких ошибок или вопросов. Вы можете уточнить, о чем вы спрашиваете? – larsks

+0

@ larsks хм, извините. Я добавил ошибку, которую я получаю. Надеюсь, что это ясно? Или вам нужна дополнительная информация? – Mathlight

ответ

3

id_rsa.pub является base64 закодированный файл, он содержит "+" символ

HTTP POST с применением/х-WWW-форм-urlencoded, нужно закодировать это содержание предотвращения "+" является преобразование в "" (клавиша пробела)

попробовать

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

см: this

1

OP здесь

В то же время я обновил сервер до версии 8.8 и изменил curl код немного и теперь он работает как шарм:

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

Просто в случае, если кому-то это понадобится в будущем ...

1

Улучшение ответа @ 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" 
Смежные вопросы