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
ユーザーがカスタマイズできるように、USERNAME
、PASSWORD
、TITLE
入力フィールドを作成します。
それはGitlabにとっても同じくらい簡単だと言いたいです(私はPOST /users/:id/keys
を のAPIサイト で見つけましたが、それをcurl
コマンドとして実装する方法がわかりません)、しかし、GitlabとGithubがどれほど密接に関連しているかはわかりません。
Gitlabを使用するときに解決する必要がある最初の問題REST APIは認証です。 こちらのドキュメントでうまく説明されています この作成では説明されている ここ に個人用アクセストークンを使用していますが、特定のユーザーとして認証するスクリプトを使用すると、 なりすましトークン (作成については こちら を参照)の方が適している場合があります。
sshキーを追加するには 必要です:
POST /user/keys
データを送信する(そしてPOSTメソッドを使用する)ためにcurl
は-d
オプションを提供します。必須フィールドはtitle
とkey
です。デフォルトのヘッダーは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 です。