正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

GitLabでSSHキーを使用する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLabにコードをプッシュするまたはプルするたびに、ユーザー名とパスワードを入力することなく、SSHキーを使用して安全に認証することができます。

GitLabでSSHキーを使用するには、次の手順を実行する必要があります:

  1. ローカルシステムでSSHキーペアを生成します。
  2. あなたのSSHキーをGitLabアカウントに追加します。
  3. GitLabへの接続を確認します。

高度なSSHキー設定については、高度なSSHキー設定を参照してください。

SSHキーとは

SSHは、公開キーと秘密キーの2つのキーを使用します。

  • 公開キーは配布できます。
  • 秘密キーは保護する必要があります。

公開キーをアップロードしても、機密データが漏洩することはありません。SSH公開キーをコピーまたはアップロードする際に、誤って秘密キーをコピーまたはアップロードしないように注意してください。

秘密キーを使用してコミットに署名することができ、これによりGitLabの使用とデータの安全性がさらに向上します。この署名は、公開キーを使用して誰でも検証できます。

詳細については、公開キー暗号としても知られる非対称暗号を参照してください。

前提条件

SSHを使用してGitLabと通信するには、以下が必要です。

  • GNU/Linux、macOS、およびWindows 10にプリインストールされているOpenSSHクライアント。
  • SSHバージョン6.5以降。それ以前のバージョンではMD5署名を使用していましたが、これは安全ではありません。

システムにインストールされているSSHのバージョンを表示するには、ssh -Vを実行します。

サポートされているSSHキーの種類

GitLabとの通信には、次のSSHキーの種類を使用できます。

アルゴリズム備考
ED25519(推奨)RSAキーよりも安全で高性能です。OpenSSH 6.5 (2014) で導入され、ほとんどのオペレーティングシステムで利用可能です。すべてのFIPSシステムで完全にサポートされていない場合があります。詳細については、イシュー367429を参照してください。
ED25519_SKローカルクライアントとGitLabサーバーの両方でOpenSSH 8.2以降が必要です。
ECDSA_SKローカルクライアントとGitLabサーバーの両方でOpenSSH 8.2以降が必要です。
RSAED25519よりも安全性が低いです。使用する場合は、GitLabは少なくとも4096ビットのキーサイズを推奨します。Goの制限により、最大キー長は8192ビットです。デフォルトのキーサイズは、ssh-keygenのバージョンによって異なります。
ECDSADSAに関連するセキュリティ上の問題は、ECDSAキーにも適用されます。

既存のSSHキーペアを確認する

キーペアを作成する前に、キーペアがすでに存在するかどうかを確認します。

  1. ホームディレクトリに移動します。
  2. .ssh/サブディレクトリに移動します。.ssh/サブディレクトリが存在しない場合は、ホームディレクトリにいないか、以前にsshを使用したことがないかのどちらかです。後者の場合は、SSHキーペアを生成する必要があります。
  3. 次のいずれかの形式のファイルが存在するかどうかを確認します。
    アルゴリズム公開キー秘密キー
    ED25519(推奨)id_ed25519.pubid_ed25519
    ED25519_SKid_ed25519_sk.pubid_ed25519_sk
    ECDSA_SKid_ecdsa_sk.pubid_ecdsa_sk
    RSA(少なくとも4096ビットのキーサイズ)id_rsa.pubid_rsa
    DSA(非推奨)id_dsa.pubid_dsa
    ECDSAid_ecdsa.pubid_ecdsa

SSHキーペアを生成する

既存のSSHキーペアがない場合は、新しいキーペアを生成します。

  1. ターミナルを開きます。

  2. キータイプと、後でキーを識別するのに役立つオプションのコメントを指定して、ssh-keygen -tを実行します。一般的には、メールアドレスをコメントとして使用します。このコメントは.pubファイルに含まれます。

    例(ED25519の場合):

    ssh-keygen -t ed25519 -C "<comment>"

    4096ビットRSAの場合:

    ssh-keygen -t rsa -b 4096 -C "<comment>"
  3. Enterキーを押します。次のような出力が表示されます。

    Generating public/private ed25519 key pair.
    Enter file in which to save the key (/home/user/.ssh/id_ed25519):
  4. デプロイキーを生成する場合、または他のキーを保存する特定のディレクトリに保存したい場合を除き、提案されたファイル名とディレクトリをそのまま使用します。

    SSHキーペアを特定のホスト専用にすることもできます。

  5. パスフレーズを指定します。

    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:

    ファイルの保存場所に関する情報を含む確認メッセージが表示されます。公開キーと秘密キーが生成されます。

  6. 秘密SSHキーをssh-agentに追加します。

    例(ED25519の場合):

    ssh-add ~/.ssh/id_ed25519

GitLabアカウントにSSHキーを追加する

GitLabでSSHを使用するには、公開キーをGitLabアカウントにコピーします。GitLabは秘密キーにアクセスできません。

SSHキーを追加すると、GitLabは既知の侵害されたキーのリストと照合してチェックします。侵害されたキーは、関連する秘密キーが公に知られており、アカウントにアクセスするために使用される可能性があるため、追加できません。この制限は設定できません。

キーがブロックされている場合は、新しいSSHキーペアを生成します。

GitLabアカウントにSSHキーを追加するには:

  1. 公開キーファイルの内容をコピーします。これは手動で行うことも、スクリプトを使用することもできます。

    これらの例では、id_ed25519.pubをファイル名に置き換えてください。たとえば、RSAの場合は、id_rsa.pubを使用します。

    tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopy
    xclip -sel clip < ~/.ssh/id_ed25519.pub
    cat ~/.ssh/id_ed25519.pub | clip
  2. GitLabにサインインします。

  3. 右上隅で、アバターを選択します。

  4. プロファイルを編集を選択します。

  5. 左サイドバーで、アクセス > SSHキーを選択します。

  6. 新しいキーを追加を選択します。

  7. キーボックスに、公開キーの内容を貼り付けます。キーを手動でコピーする場合は、ssh-rsassh-dssecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521ssh-ed25519sk-ecdsa-sha2-nistp256@openssh.com、またはsk-ssh-ed25519@openssh.comで始まり、コメントで終わる可能性があるキー全体をコピーしていることを確認してください。

  8. タイトルボックスに、Work LaptopHome Workstationなどの説明を入力します。

  9. オプション。キーの使用タイプを選択します。Authentication(認証)またはSigning(署名)のいずれか、またはその両方で使用できます。Authentication & Signing(認証と署名)がデフォルト値です。

  10. オプション。有効期限を更新して、デフォルトの有効期限を変更します。詳細については、SSHキーの有効期限を参照してください。

  11. キーを追加を選択します。

SSH接続を確認する

SSHキーが正しく追加されていること、およびGitLabインスタンスに接続できることを確認します:

  1. 正しいサーバーに接続していることを確認するには、SSHホストキーのフィンガープリントを特定します:
    • GitLab.comについては、SSHホストキーのフィンガープリントドキュメントを参照してください。
    • GitLab Self-ManagedまたはGitLab Dedicatedの場合は、gitlab.example.comがGitLabインスタンスのURLであるhttps://gitlab.example.com/help/instance_configuration#ssh-host-keys-fingerprintsを参照してください。
  2. ターミナルを開き、次のコマンドを実行します。
    • GitLab.comの場合は、ssh -T git@gitlab.comを使用します。
    • GitLab Self-ManagedまたはGitLab Dedicatedの場合は、gitlab.example.comがGitLabインスタンスのURLであるssh -T git@gitlab.example.comを使用します。

デフォルトでは、接続にはgitユーザー名を使用しますが、GitLab Self-ManagedまたはGitLab Dedicatedの管理者はユーザー名を変更できます。

  1. 最初の接続時に、GitLabホストの信頼性を確認する必要がある場合があります。次のようなメッセージが表示された場合は、画面のプロンプトに従ってください:

    The authenticity of host 'gitlab.example.com (35.231.145.151)' can't be established.
    ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw.
    Are you sure you want to continue connecting (yes/no)?

    ウェルカムメッセージが表示されます。

    Welcome to GitLab, <username>!

    メッセージが表示されない場合は、SSH接続のトラブルシューティングを行うことができます。

SSHキーを表示する

次の手順でアカウントのSSHキーを表示できます。

  1. 右上隅で、アバターを選択します。
  2. プロファイルを編集を選択します。
  3. 左サイドバーで、アクセス > SSHキーを選択します。

既存のSSHキーがページの下部に一覧表示されます。情報には次のものが含まれます。

  • キーのタイトル
  • 公開フィンガープリント
  • 許可されている使用タイプ
  • 作成日
  • 最終使用日
  • 有効期限

SSHキーを削除する

SSHキーを取り消すか削除して、アカウントから完全に削除できます。

SSHキーでコミットに署名している場合、SSHキーを削除すると、他の影響もあります。詳細については、削除されたSSHキーで署名されたコミットを参照してください。

SSHキーを取り消す

SSHキーのセキュリティが侵害された場合は、キーを取り消します。

前提条件:

  • SSHキーには、Signing(署名)またはAuthentication & Signing(認証と署名)の使用タイプが必要です。

次の手順でSSHキーを取り消せます。

  1. 右上隅で、アバターを選択します。
  2. プロファイルを編集を選択します。
  3. 左サイドバーで、アクセス > SSHキーを選択します。
  4. 取り消したいSSHキーの横にある取り消しを選択します。
  5. 取り消しを選択します。

SSHキーを削除する

次の手順でSSHキーを削除できます。

  1. 右上隅で、アバターを選択します。
  2. プロファイルを編集を選択します。
  3. 左サイドバーで、アクセス > SSHキーを選択します。
  4. 削除したいキーの横にある削除 remove )を選択します。
  5. 削除を選択します。

SSHキーの有効期限

SSHキーをアカウントに追加するときに、有効期限を設定できます。このオプションの設定は、セキュリティ漏洩のリスクを制限するのに役立ちます。

SSHキーの有効期限が切れると、認証することやコミットへの署名に使用できなくなります。新しいSSHキーを生成し、アカウントに追加する必要があります。

GitLab Self-ManagedおよびGitLab Dedicatedでは、管理者は有効期限を表示し、キーを削除する際のガイダンスとして使用できます。

GitLabは、期限切れのSSHキーを毎日チェックし、通知を送信します:

  • 01:00 AM UTC、有効期限の7日前。
  • 02:00 AM UTC、有効期限当日。