web-dev-qa-db-ja.com

bash実行可能ファイルを介してSSHキーをGitlabに追加するにはどうすればよいですか?

SSHキーを作成し、それをユーザーのGitlabアカウントにアップロードするbash実行可能ファイルを作成しています。私はbash実行可能ファイルを介してSSHキーを作成する方法を知っています:

ssh-keygen -o -f ~/.ssh/id_rsa

また、そこから取得する方法も知っていますが、ユーザーのGitlabアカウントにアップロードする方法がわかりません。

ユーザーのSSHをGithubにアップロードするための複数のドキュメントを見つけましたが、Gitlabは見つかりませんでした(ほとんど同じだと思います...?)。だから私はこれをGithubに使用します

curl -u "USERNAME:PASSWORD" --data "{\"title\": \"TITLE\", \"key\": \"$(cat ~/.ssh/id_rsa.pub)\"}" https://api.github.com/user/keys

ユーザーがカスタマイズできるように、USERNAMEPASSWORDTITLE入力フィールドを作成します。

それはGitlabにとっても同じくらい簡単だと言いたいです(私はPOST /users/:id/keysのAPIサイト で見つけましたが、それをcurlコマンドとして実装する方法がわかりません)、しかし、GitlabとGithubがどれほど密接に関連しているかはわかりません。

1
a.mosallaei

Gitlabを使用するときに解決する必要がある最初の問題REST APIは認証です。 こちらのドキュメントでうまく説明されています この作成では説明されている ここ に個人用アクセストークンを使用していますが、特定のユーザーとして認証するスクリプトを使用すると、 なりすましトークン (作成については こちら を参照)の方が適している場合があります。

sshキーを追加するには 必要です:

POST /user/keys

データを送信する(そしてPOSTメソッドを使用する)ためにcurl-dオプションを提供します。必須フィールドはtitlekeyです。デフォルトのヘッダーはContent-Type: application/x-www-form-urlencodedですが、APIはjsonを想定しているため、 -Hオプション:

$ curl -d '{"title":"test key","key":"'"$(cat ~/.ssh/id_rsa.pub)"'"}' -H 'Content-Type: application/json' https://gitlab.com/api/v4/user/keys?private_token=<my_access_token>
{"id":3889765,"title":"test key","key":"ssh-rsa <my_ssh_key>","created_at":"2019-08-01T21:26:40.952Z"}

変更をテストするために、 sshキーをリストします 。 GETはcurlのデフォルトのメソッドなので、ドキュメントにはGET /user/keysを使用する必要があると記載されています。

$ curl https://gitlab.com/api/v4/user/keys?private_token=<my_access_token>
[{"id":3889765,"title":"test key","key":"ssh-rsa <my_ssh_key>","created_at":"2019-08-01T21:26:40.952Z"}]

これはテストのためだけに行ったので、DELETE /user/keys/:key_idを使用して キーを削除します:key_idはキーのIDで置き換える必要があることに注意してください削除するには:

$ curl -X DELETE https://gitlab.com/api/v4/user/keys/3889765?private_token=<my_access_token>

こちらが curlに関する一般的な記事と一般的なREST method です。

2
dessert