繰り返しのユーザー名とパスワードの入力は面倒で時間の無駄です。Gitlabアカウントでパスワード認証を使用する場合、各アクションはコマンドの一部として、または対話型プロンプトを通じて認証情報を送信する必要があります。
GitLabのCI/CDパイプラインを自動化する際に、パスワード認証は非効率的であり、可能なセキュリティリスクとなります。なぜ面倒を終わらせて、Gitlab SSHキーを使用したSecure Shell (SSH)認証に切り替えてみましょうか?以下で詳しく説明します!
このチュートリアルの終わりまでには、SSHキーペアを生成し、そのキーを使用して認証し、新しいGitlabプロジェクトを公開しているはずです。
前提条件
このチュートリアルは実践的なデモンストレーションです。それに沿って進むためには、以下の要件を準備する必要があります。
- あなたのGitLabアカウント。まだアカウントをお持ちでない方は、まず無料アカウントに登録してください。
- A computer to use as your Gitlab SSH client. This tutorial will be using an Ubuntu 20.04 LTS computer but should work with Windows and macOS too.
- Gitを更新またはインストールします。この記事を書いている時点での最新バージョンは2.25.1です。
Visual Studio Code(VS Code)。このチュートリアルの例では、VS Code 1.62.3を使用します。
GitlabのSSHキーペアを生成する
SSHキーまたはキーペアは、秘密鍵と公開鍵で構成されています。要するに、秘密鍵はクライアント(あなたのコンピュータ)がサーバー(Gitlab)に対して認証に提示するものであり、公開鍵はサーバーがあなたの秘密鍵を解読するために使用します。そして、両方の鍵が一致すると、認証が通ります。
GitLabは2つのタイプのSSHキーペア、RSAとED25519 SSHキーをサポートしています。しかし、この例では、よりセキュアとされているED25519キーペアを生成します。。以下の手順に従ってSSHキーペアを生成します。
1. デスクトップで、ターミナルセッションを開き、以下のコマンドを実行します。このコマンドはVS Codeでホームディレクトリを開きます。
2. VS Codeで、ターミナル —> 新しいターミナルをクリックします。

3. VS Codeのターミナルで、以下のssh-keygen -t
を実行してED25519
SSHキータイプを生成します。コメントタグ-C
はオプションですが、キーをより識別しやすくするために推奨されています。
4. 次に、鍵を保存する場所を尋ねられたら、Enterキーを押してデフォルトのファイル名を受け入れます。ファイル名は次のようになります:/home/<username>/.ssh/id_ed25519、<username>はあなたのユーザー名です。

5. 次に、パスフレーズを空白のままにして、Enterキーを2回押します。これにより、パスワードのないSSHキーペアが作成されます。

スクリーンショットのような結果が表示されるはずです。この結果には、プライベートキー(id_ed25519)と公開キー(id_ed25519.pub)の場所が表示されます。
プライベートキーと公開キーは同じ基本ファイル名を持っています。ただし、公開キーには .pub 拡張子があり、プライベートキーには拡張子がありません。

Gitlab SSHキーをプロファイルに追加する
プライベートキーはコンピューターに残りますが、公開キーはGitlabサーバーに置かれるべきです。したがって、SSHキーを生成したら、次のステップは公開キーをGitlabアカウントにアップロードすることです。以下の手順に従ってください。
1. VSCodeで公開キーファイルを開きます。エクスプローラーペインで.sshフォルダを展開し、id_es25519.pubをクリックします。次に、公開キーを選択してクリップボードにコピーします。

2. 次に、ウェブブラウザを開き、https://gitlab.comに移動してGitlabアカウントにログインします。
3. ログインしたら、https://gitlab.com/-/profile/keys で SSHキー プロファイル設定に移動してください。
- 先ほどコピーした公開鍵を キー フィールドに貼り付けてください。
- タイトル フィールドは自動的に公開鍵のコメント部分で埋められます。タイトルの値はそのままにしてもよいし、好みの値を入力してもよいです。
- オプションで 有効期限 フィールドに有効期限日を指定することもできます。
- 最後に、鍵を追加 をクリックしてください。

Gitlab SSHキーの使用
これでSSHキーを生成し、Gitlabアカウントにアップロードしました。残りは、SSHキーが機能するかどうかをテストし、Gitlabに接続して認証することです。
サインイン
VS Codeターミナルで、以下のコマンドを実行してGitlabアカウントに接続してください。
初めて接続する場合、コマンドはホストの正当性を確認し、接続を確認するように促します。プロンプトで yes
と入力し、確認するために Enter
キーを押してください。
ユーザー名とパスワードを入力する必要はなかったことに注意してください。代わりに、SSHコマンドは自動的に認証にSSHキーを使用します。成功したログイン後、”Gitlabへようこそ @username!” と表示されるはずです。

新しいプロジェクトを公開する
Gitlab SSHキーが正常に動作し、認証が成功することを確認しました。しかし、GitlabとGitを介して相互作用する際にも機能するでしょうか?新しいGitlabリポジトリを公開してテストしてみてはいかがでしょうか?
1. 最初に、Gitの設定を初期化し、Gitlabアカウントのユーザー名とメールアドレスを設定します。VS Codeのターミナルで、以下のgit config
コマンドを実行して、それぞれのGitlabユーザー名とメールアドレスを指定します。
実行したコマンドは、提供された情報で~/.gitconfigファイルを更新または作成するはずです。

2. 次に、ホームディレクトリの下に新しいリポジトリ用のフォルダを作成します。新しいフォルダの名前をmy-first-projectとします。
フォルダ名は、Gitlabリポジトリのプロジェクト名にもなります。
3. 以下のコマンドを実行して、リポジトリを初期化します。Gitlabのユーザー名で<username>
を変更してください。
以下のスクリーンショットと同様の確認メッセージが表示されます。

4. 次に、プロジェクトのリモートGitリポジトリアドレスを指定します。このリポジトリアドレスは、SSHキーまたはユーザー名とパスワードで認証するかどうかを決定します。
以下に構文を示します。ここで<username>
はGitlabのユーザー名であり、<project-name>
はGitlabのリポジトリ名です。リポジトリアドレスは[email protected]
で始まることに注意してください。これは、ユーザー名とパスワードではなくSSHキーで認証されることを示しています。
Gitlabのユーザー名がkevin
で、リポジトリ名がmy-first-project
であると仮定します。次に、ターミナルで以下のコマンドを実行します。
5. リポジトリ内にREADME.mdという名前の空のファイルを作成するには、以下のコマンドを実行してください。
6. README.mdファイルを編集して、以下の内容をファイルに貼り付けます。編集後、ファイルを保存してください。
“`code>Gitlab SSHキーをデモンストレーションするための私の最初のプロジェクト。“`

7. 今、Gitに新しいREADME.mdファイルをリポジトリに追加し、変更をコミットするように指示します。
以下に示すような出力が表示されます。

8. 最後に、新しいリポジトリを公開する時間です。コンピュータからGitlabアカウントにリポジトリをプッシュするには、以下のコマンドを実行します。
以下のように表示されると、プロジェクトの作成が成功し、資格情報のプロンプトは表示されませんでした! GitはGitlabとの認証にSSHキーを使用しました。

9. 最後に、新しいGitlabプロジェクトがオンライン上に存在することを確認してください。ブラウザを使用して、https://gitlab.com/dashboard/projects に移動して、既存のプロジェクトのリストを表示します。そのリストにmy-first-projectという名前が表示されるはずです。

10. さらに、プロジェクト名をクリックすると、README.mdファイルとその内容が表示されます。

結論
おめでとうございます!このチュートリアルを最後まで進めてきてくれてありがとう!このステップバイステップのチュートリアルを通じて、SSHキーの生成と使用方法を学びました。これにより、GitLabリポジトリへのセキュアなバージョン管理デプロイを行うことができます。
この知識を持っていると、GitLabリポジトリでのタスクを安全に実行できます。ユーザー名やパスワードを誤って公開する心配がなくなります。
GitLab SSHキー認証を以前に使用したことはありますか?その経験はどうでしたか?他の人にもSSHキーを使用することをお勧めしますか?それとも避けるべき理由がありますか?お知らせください。