GitLab SSH キーの生成と使用方法

繰り返しのユーザー名とパスワードの入力は面倒で時間の無駄です。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キーペア、RSAED25519 SSHキーをサポートしています。しかし、この例では、よりセキュアとされているED25519キーペアを生成します。。以下の手順に従ってSSHキーペアを生成します。

1. デスクトップで、ターミナルセッションを開き、以下のコマンドを実行します。このコマンドはVS Codeでホームディレクトリを開きます。

code ~

2. VS Codeで、ターミナル —> 新しいターミナルをクリックします。

Opening a new terminal instance in VSCode

3. VS Codeのターミナルで、以下のssh-keygen -tを実行してED25519 SSHキータイプを生成します。コメントタグ-Cはオプションですが、キーをより識別しやすくするために推奨されています。

ssh-keygen -t ed25519 -C "Gitlab SSH Key"

4. 次に、鍵を保存する場所を尋ねられたら、Enterキーを押してデフォルトのファイル名を受け入れます。ファイル名は次のようになります:/home/<username>/.ssh/id_ed25519、<username>はあなたのユーザー名です。

Accepting the default filename

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

Leaving the passphrase empty

スクリーンショットのような結果が表示されるはずです。この結果には、プライベートキー(id_ed25519)と公開キー(id_ed25519.pub)の場所が表示されます。

プライベートキーと公開キーは同じ基本ファイル名を持っています。ただし、公開キーには .pub 拡張子があり、プライベートキーには拡張子がありません。

Generating the Gitlab SSH key pair

Gitlab SSHキーをプロファイルに追加する

プライベートキーはコンピューターに残りますが、公開キーはGitlabサーバーに置かれるべきです。したがって、SSHキーを生成したら、次のステップは公開キーをGitlabアカウントにアップロードすることです。以下の手順に従ってください。

1. VSCodeで公開キーファイルを開きます。エクスプローラーペインで.sshフォルダを展開し、id_es25519.pubをクリックします。次に、公開キーを選択してクリップボードにコピーします。

Copying the public key

2. 次に、ウェブブラウザを開き、https://gitlab.comに移動してGitlabアカウントにログインします。

3. ログインしたら、https://gitlab.com/-/profile/keys で SSHキー プロファイル設定に移動してください。

  • 先ほどコピーした公開鍵を キー フィールドに貼り付けてください。
  • タイトル フィールドは自動的に公開鍵のコメント部分で埋められます。タイトルの値はそのままにしてもよいし、好みの値を入力してもよいです。
  • オプションで 有効期限 フィールドに有効期限日を指定することもできます。
  • 最後に、鍵を追加 をクリックしてください。
Adding the Gitlab SSH key to your profile

Gitlab SSHキーの使用

これでSSHキーを生成し、Gitlabアカウントにアップロードしました。残りは、SSHキーが機能するかどうかをテストし、Gitlabに接続して認証することです。

サインイン

VS Codeターミナルで、以下のコマンドを実行してGitlabアカウントに接続してください。

ssh -T [email protected]

初めて接続する場合、コマンドはホストの正当性を確認し、接続を確認するように促します。プロンプトで yes と入力し、確認するために Enter キーを押してください。

ユーザー名とパスワードを入力する必要はなかったことに注意してください。代わりに、SSHコマンドは自動的に認証にSSHキーを使用します。成功したログイン後、”Gitlabへようこそ @username!” と表示されるはずです。

Logging in to Gitlab via SSH

新しいプロジェクトを公開する

Gitlab SSHキーが正常に動作し、認証が成功することを確認しました。しかし、GitlabとGitを介して相互作用する際にも機能するでしょうか?新しいGitlabリポジトリを公開してテストしてみてはいかがでしょうか?

1. 最初に、Gitの設定を初期化し、Gitlabアカウントのユーザー名とメールアドレスを設定します。VS Codeのターミナルで、以下のgit config コマンドを実行して、それぞれのGitlabユーザー名とメールアドレスを指定します。

git config --global user.name "your_username"
git config --global user.email "[email protected]"

実行したコマンドは、提供された情報で~/.gitconfigファイルを更新または作成するはずです。

Initializing the Git configuration

2. 次に、ホームディレクトリの下に新しいリポジトリ用のフォルダを作成します。新しいフォルダの名前をmy-first-projectとします。

フォルダ名は、Gitlabリポジトリのプロジェクト名にもなります

# 新しいフォルダを作成
mkdir ~/my-first-project
# 新しいフォルダに作業ディレクトリを変更
cd ~/my-first-project

3. 以下のコマンドを実行して、リポジトリを初期化します。Gitlabのユーザー名で<username>を変更してください。

git init

以下のスクリーンショットと同様の確認メッセージが表示されます。

Initializing a new repository

4. 次に、プロジェクトのリモートGitリポジトリアドレスを指定します。このリポジトリアドレスは、SSHキーまたはユーザー名とパスワードで認証するかどうかを決定します。

以下に構文を示します。ここで<username>はGitlabのユーザー名であり、<project-name>はGitlabのリポジトリ名です。リポジトリアドレスは[email protected]で始まることに注意してください。これは、ユーザー名とパスワードではなくSSHキーで認証されることを示しています。

git remote add origin git@gitlab.com:<username>/<project-name>.git

Gitlabのユーザー名がkevinで、リポジトリ名がmy-first-projectであると仮定します。次に、ターミナルで以下のコマンドを実行します。

git remote add origin git@gitlab.com:kevin/my-first-project.git

5. リポジトリ内にREADME.mdという名前の空のファイルを作成するには、以下のコマンドを実行してください。

touch README.md

6. README.mdファイルを編集して、以下の内容をファイルに貼り付けます。編集後、ファイルを保存してください。

“`code>Gitlab SSHキーをデモンストレーションするための私の最初のプロジェクト。“`

My first project to demonstrate Gitlab SSH keys.
Creating a file and adding content

7. 今、Gitに新しいREADME.mdファイルをリポジトリに追加し、変更をコミットするように指示します。

git add README.md
git commit -m "My first commit"

以下に示すような出力が表示されます。

Adding a file and committing changes to the repository

8. 最後に、新しいリポジトリを公開する時間です。コンピュータからGitlabアカウントにリポジトリをプッシュするには、以下のコマンドを実行します。

git push --all origin

以下のように表示されると、プロジェクトの作成が成功し、資格情報のプロンプトは表示されませんでした! GitはGitlabとの認証にSSHキーを使用しました。

Creating a repository in Gitlab

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

Viewing the Projects list in Gitlab

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

Viewing the README file

結論

おめでとうございます!このチュートリアルを最後まで進めてきてくれてありがとう!このステップバイステップのチュートリアルを通じて、SSHキーの生成と使用方法を学びました。これにより、GitLabリポジトリへのセキュアなバージョン管理デプロイを行うことができます。

この知識を持っていると、GitLabリポジトリでのタスクを安全に実行できます。ユーザー名やパスワードを誤って公開する心配がなくなります。

GitLab SSHキー認証を以前に使用したことはありますか?その経験はどうでしたか?他の人にもSSHキーを使用することをお勧めしますか?それとも避けるべき理由がありますか?お知らせください。

Source:
https://adamtheautomator.com/gitlab-ssh/