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

詳細SSHキーの設定

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

特殊なワークフロー向けに、高度なSSHキーオプションを設定します。

GitLabアカウントでの基本的なSSHキーの使用方法については、GitLabでSSHキーを使用するを参照してください。

FIDO2ハードウェアセキュリティキー向けのSSHキーペアを生成する

ED25519_SKまたはECDSA_SK SSHキーを生成するには、OpenSSH 8.2以降を使用する必要があります。

  1. ハードウェアセキュリティキーをコンピューターに挿入します。

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

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

    たとえば、ED25519_SKの場合:

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

    ECDSA_SKの場合:

    ssh-keygen -t ecdsa-sk -C "<comment>"

    セキュリティキーがFIDO2レジデントキーをサポートしている場合は、SSHキーの作成時に有効にできます。

    ssh-keygen -t ed25519-sk -O resident -C "<comment>"

    -O residentは、キーをFIDO認証システム自体に保存する必要があることを示します。レジデントキーは、ssh-add -Kまたはssh-keygen -Kを使用してセキュリティキーから直接読み込むことができるため、新しいコンピューターへのインポートが簡単です。

  4. Enterキーを押します。次のような出力が表示されます。

    Generating public/private ed25519-sk key pair.
    You may need to touch your authenticator to authorize key generation.
  5. ハードウェアセキュリティキーのボタンを押します。

  6. 提案されたファイル名とディレクトリをそのまま使用します。

    Enter file in which to save the key (/home/user/.ssh/id_ed25519_sk):
  7. パスフレーズを指定します。

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

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

公開キーと秘密キーが生成されます。GitLabアカウントに公開SSHキーを追加します。

1PasswordでSSHキーペアを生成する

1Password1Passwordブラウザ拡張機能を使用して、次のいずれかを行うことができます。

  • 新しいSSHキーを自動的に生成する。
  • 1Password Vaultにある既存のSSHキーを使用してGitLabで認証する。
  1. GitLabにサインインします。
  2. 右上隅で、アバターを選択します。
  3. プロファイルを編集を選択します。
  4. 左側のサイドバーでSSHキーを選択します。
  5. 新しいキーを追加を選択します。
  6. キーを選択すると、1Passwordヘルパーが表示されます。
  7. 1Passwordアイコンを選択し、1Passwordのロックを解除します。
  8. SSHキーの作成を選択するか、既存のSSHキーを選択して公開キーを入力できます。
  9. タイトルボックスに、Work LaptopHome Workstationなどの説明を入力します。
  10. オプション。キーの使用タイプを選択します。Authentication(認証)またはSigning(署名)のいずれか、またはその両方で使用できます。Authentication & Signing(認証と署名)がデフォルト値です。
  11. オプション。有効期限を更新して、デフォルトの有効期限を変更します。
  12. キーを追加を選択します。

1PasswordでSSHキーを使用する詳しい方法については、1Passwordドキュメントを参照してください。

エンタープライズのユーザーのSSHキーを無効にする

前提条件:

  • エンタープライズのユーザーが所属するグループのオーナーロールを持っている必要があります。

グループのエンタープライズのユーザーのSSHキーを無効にすると:

  • エンタープライズのユーザーが新しいSSHキーを追加できなくなります。
  • エンタープライズのユーザーの既存のSSHキーが無効になります。

これは、グループの管理者であるEnterpriseユーザーにも適用されます。

エンタープライズのユーザーのSSHキーを無効にするには:

  1. 上部のバーで、検索または移動先を選択して、グループを見つけます。
  2. 設定 > 一般を選択します。
  3. 権限とグループ機能を展開します。
  4. エンタープライズのユーザーの下で、SSHキーを無効にするを選択します。
  5. 変更を保存を選択します。

RSAキーペアをより安全な形式にアップグレードする

OpenSSHのバージョンが6.5 ~ 7.8の場合は、秘密RSA SSHキーをより安全なOpenSSH形式で保存できます。ターミナルを開いて次のコマンドを実行します。

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

または、次のコマンドを実行して、より安全な暗号化形式で新しいRSAキーを生成することもできます。

ssh-keygen -o -t rsa -b 4096 -C "<comment>"

SSHキーのパスフレーズを更新する

次の手順で、SSHキーのパスフレーズを更新できます。

  1. ターミナルを開き、次のコマンドを実行します。

    ssh-keygen -p -f /path/to/ssh_key
  2. プロンプトでパスフレーズを入力し、Enterキーを押します。

単一のGitLabインスタンスで異なるアカウントを使用する

複数のアカウントを使用して、GitLabの単一インスタンスに接続できます。前のトピックで説明したコマンドを使用すると、これを行うことができます。ただし、IdentitiesOnlyyesに設定しても、IdentityFileHostブロックの外に存在する場合、サインインできません。

代わりに、~/.ssh/configファイルでホストにエイリアスを割り当てることができます。

  • Hostには、user_1.gitlab.comuser_2.gitlab.comのようなエイリアスを使用します。高度な構成は維持が難しく、git remoteのようなツールを使用する場合、これらの文字列の方が理解しやすくなります。
  • IdentityFileには、秘密キーのパスを使用します。
# User1 Account Identity
Host <user_1.gitlab.com>
  Hostname gitlab.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/<example_ssh_key1>

# User2 Account Identity
Host <user_2.gitlab.com>
  Hostname gitlab.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/<example_ssh_key2>

user_1のリポジトリをクローンするには、git cloneコマンドでuser_1.gitlab.comを使用します。

git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git

originとしてエイリアスされている、以前にクローンしたリポジトリを更新するには、次のコマンドを使用します。

git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git

プライベートキーとパブリックキーには、機密データが含まれています。ファイルに対する権限を調節し、自分には読み取り可能でも他のユーザーにはアクセスできないように設定してください。

リポジトリごとに異なるキーを使用する

リポジトリごとに異なるキーを使用できます。

ターミナルを開き、次のコマンドを実行します。

git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"

このコマンドはSSHエージェントを使用せず、Git 2.10以降が必要です。sshコマンドオプションの詳細については、sshssh_configの両方のmanページを参照してください。

別のディレクトリでSSHキーを使用する

SSHキーペアがデフォルトのディレクトリにない場合は、プライベートキーを保存した場所を指すようにSSHクライアントを設定します。

  1. ターミナルを開き、次のコマンドを実行します。

    eval $(ssh-agent -s)
    ssh-add <directory to private SSH key>
  2. これらの設定を~/.ssh/configファイルに保存します。例:

    # GitLab.com
    Host gitlab.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/gitlab_com_rsa
    
    # Private GitLab instance
    Host gitlab.company.com
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/example_com_rsa

これらの設定の詳細については、SSH設定マニュアルのman ssh_configページを参照してください。

公開SSHキーはアカウントに紐付けられるため、GitLabに対して一意である必要があります。SSHを使用してコードをプッシュする際、SSHキーは唯一の識別子となります。SSHキーは単一のユーザーに一意にマップする必要があります。

EclipseでSSHとEGitを使用する

EGitを使用している場合は、EclipseにSSHキーを追加できます。

Microsoft WindowsでSSHを使用する

Windows 10では、Linux用Windowsサブシステム(WSL)WSL 2と組み合わせて使用​​できます。gitsshがプリインストールされているか、Git for WindowsをインストールしてPowerShell経由でSSHを使用できます。

WSLで生成されたSSHキーは、Git for Windowsでは直接利用できません。その逆も同様です。これはホームディレクトリが異なるためです。

  • WSL: /home/<user>
  • Git for Windows: C:\Users\<user>

.ssh/ディレクトリをコピーして同じキーを使用するか、各環境でキーを生成します。

Windows 11を実行していて、OpenSSH for Windowsを使用している場合は、HOME環境変数が正しく設定されていることを確認してください。正しく設定されていない場合、秘密SSHキーが見つからない可能性があります。

代替ツールは次のとおりです。

SSH経由のGitに2要素認証を使用する

Git over SSHに2要素認証を使用できます。ED25519_SKまたはECDSA_SK SSHキーを使用する必要があります。詳細については、サポートされているSSHキーの種類を参照してください。