詳細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以降を使用する必要があります。
ハードウェアセキュリティキーをコンピューターに挿入します。
ターミナルを開きます。
キーの種類と、後でキーを識別するのに役立つオプションのコメントを指定して、
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を使用してセキュリティキーから直接読み込むことができるため、新しいコンピューターへのインポートが簡単です。Enterキーを押します。次のような出力が表示されます。
Generating public/private ed25519-sk key pair. You may need to touch your authenticator to authorize key generation.ハードウェアセキュリティキーのボタンを押します。
提案されたファイル名とディレクトリをそのまま使用します。
Enter file in which to save the key (/home/user/.ssh/id_ed25519_sk):パスフレーズを指定します。
Enter passphrase (empty for no passphrase): Enter same passphrase again:ファイルの保存場所に関する情報を含む確認メッセージが表示されます。
公開キーと秘密キーが生成されます。GitLabアカウントに公開SSHキーを追加します。
1PasswordでSSHキーペアを生成する
1Passwordと1Passwordブラウザ拡張機能を使用して、次のいずれかを行うことができます。
- 新しいSSHキーを自動的に生成する。
- 1Password Vaultにある既存のSSHキーを使用してGitLabで認証する。
- GitLabにサインインします。
- 右上隅で、アバターを選択します。
- プロファイルを編集を選択します。
- 左側のサイドバーでSSHキーを選択します。
- 新しいキーを追加を選択します。
- キーを選択すると、1Passwordヘルパーが表示されます。
- 1Passwordアイコンを選択し、1Passwordのロックを解除します。
- SSHキーの作成を選択するか、既存のSSHキーを選択して公開キーを入力できます。
- タイトルボックスに、
Work LaptopやHome Workstationなどの説明を入力します。 - オプション。キーの使用タイプを選択します。
Authentication(認証)またはSigning(署名)のいずれか、またはその両方で使用できます。Authentication & Signing(認証と署名)がデフォルト値です。 - オプション。有効期限を更新して、デフォルトの有効期限を変更します。
- キーを追加を選択します。
1PasswordでSSHキーを使用する詳しい方法については、1Passwordドキュメントを参照してください。
エンタープライズのユーザーのSSHキーを無効にする
前提条件:
- エンタープライズのユーザーが所属するグループのオーナーロールを持っている必要があります。
グループのエンタープライズのユーザーのSSHキーを無効にすると:
- エンタープライズのユーザーが新しいSSHキーを追加できなくなります。
- エンタープライズのユーザーの既存のSSHキーが無効になります。
これは、グループの管理者であるEnterpriseユーザーにも適用されます。
エンタープライズのユーザーのSSHキーを無効にするには:
- 上部のバーで、検索または移動先を選択して、グループを見つけます。
- 設定 > 一般を選択します。
- 権限とグループ機能を展開します。
- エンタープライズのユーザーの下で、SSHキーを無効にするを選択します。
- 変更を保存を選択します。
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キーのパスフレーズを更新できます。
ターミナルを開き、次のコマンドを実行します。
ssh-keygen -p -f /path/to/ssh_keyプロンプトでパスフレーズを入力し、Enterキーを押します。
単一のGitLabインスタンスで異なるアカウントを使用する
複数のアカウントを使用して、GitLabの単一インスタンスに接続できます。前のトピックで説明したコマンドを使用すると、これを行うことができます。ただし、IdentitiesOnlyをyesに設定しても、IdentityFileがHostブロックの外に存在する場合、サインインできません。
代わりに、~/.ssh/configファイルでホストにエイリアスを割り当てることができます。
Hostには、user_1.gitlab.comやuser_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.gitoriginとしてエイリアスされている、以前にクローンしたリポジトリを更新するには、次のコマンドを使用します。
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コマンドオプションの詳細については、sshとssh_configの両方のmanページを参照してください。
別のディレクトリでSSHキーを使用する
SSHキーペアがデフォルトのディレクトリにない場合は、プライベートキーを保存した場所を指すようにSSHクライアントを設定します。
ターミナルを開き、次のコマンドを実行します。
eval $(ssh-agent -s) ssh-add <directory to private SSH key>これらの設定を
~/.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と組み合わせて使用できます。gitとsshがプリインストールされているか、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キーが見つからない可能性があります。
代替ツールは次のとおりです。
- Cygwin
- PuTTYgen 0.81以降(以前のバージョンは情報漏洩攻撃に対して脆弱です)
SSH経由のGitに2要素認証を使用する
Git over SSHに2要素認証を使用できます。ED25519_SKまたはECDSA_SK SSHキーを使用する必要があります。詳細については、サポートされているSSHキーの種類を参照してください。