- 要件
- SSHキーのオプション
- 既存のSSHキーを確認する
- 新しいSSHキーペアの生成
- ED25519SSHキー
- RSA SSHキー
- SSHキーペアを生成するための一般的な手順
- バージョン6.5から7までのRSAキーとOpenSSH。,8
- GitLabアカウントにSSHキーを追加する
- 二要素認証(2FA)
- すべてが正しくセットアップされていることをテストする
- 非デフォルトSSHキーペアパスでの作業
- リポジトリごとのSSHキー
- 単一のGitLabインスタンス上の複数のアカウント
- キーをデプロイする
- アプリケーション
- Eclipseli
- gitlabサーバー上のssh
- microsoft windows用のオプション
- トラブルシューティング
gitは分散バージョン管理システムであり、ローカルで作業できることを意味します。,さらに、変更を他のサーバーに共有または”プッシュ”することもできます。GitLabは、SSHキーを使用してGitとそのサーバー間の安全な通信をサポートします。
SSHプロトコルはこのセキュリティを提供し、毎回ユーザー名またはパスワードを指定せずにtheGitLabリモートサーバーに認証することができます。
このページは、GitLabリポジトリへのsecureconnectionsを支援するために使用できる安全なSSHキーを設定するのに役立ちます。
- SSHキーの作成に関する情報が必要な場合は、SSHキーのオプションから始めてください。,
- GitLabアカウント専用のSSHキーをお持ちの場合は、デフォルト以外のSSHキーペアパスを使用することに興味があるかもしれません。すでにSSHキーペアをお持ちの場合は、GitLabアカウントにSSHキーを追加する方法に移動できます。
要件
SSHをサポートするには、GitLabにOpenSSHクライアントのインストールが必要です。OpenSSHクライアントは、GNU/LinuxおよびmacOS、およびWindows10にプリインストールされています。
お使いのシステムにSSHバージョン6.5以降が含まれていることを確認してください。, 次のコマンドは、システムにインストールされているバージョンのofSSHを返します。
ssh -V
GitLabはMicrosoft Windowsへのインストールをサポートしていませんが、SSHキーを設定してWindowsをクライアントとしてセットアップすることができます。
SSHキーのオプション
GitLabでは、RSA、DSA、ECDSA、およびED25519キーの使用がサポートされています。
- GitLabはGitLab11.0でdsaキーを非推奨にしました。Goによる実用的な暗号化で説明されているように、DSAに関連するセキュリティ問題はECDSAにも適用されます。,
したがって、このドキュメントでは、ED25519とRSAキーの使用に焦点を当てています。
管理者は、許可するキーとその最小長を制限できます。
既存のSSHキーを確認する
既存のSSHキーがある場合は、GitLabrepositoriesとの接続を保護するためにそれらを使用できる場合があります。, デフォルトでは、LinuxおよびmacOSシステムのSSHキーは、ユーザーのホームディレクトリの.ssh/
サブディレクトリに格納されます。 以下のテーブルを含むデフォルトのファイル名は各SSH鍵アルゴリズム:
のための勧告は、オプションのためにSSH鍵となります。
新しいSSHキーペアの生成
作成する場合
- ED25519キーは、ED25519SSHキーを読み取ります。
- RSAキー、RSA SSHキーを読み取ります。
ED25519SSHキー
Gosuggestsによる本の実用的な暗号化は、ED25519キーがRSAキーよりも安全で高性能であることを示しています。,
OpenSSH6.5がED25519SSHキーを2014年に導入したため、現在動作しているシステムで利用可能である必要があります。
次のコマンドを使用してED25519キーを作成および構成できます。
ssh-keygen -t ed25519 -C "<comment>"
-C
フラグは、電子メールアドレスなどの引用符で囲まれたコメントを付けるオプションの方法で、SSHキーにラベルを付けることができます。
あなたは次のような応答が表示されます:
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
ガイダンスについては、一般的な手順に進みます。,
RSA SSHキー
SSHにRSAキーを使用する場合は、米国国立標準技術研究所が推奨しています少なくとも2048のキーサイズを使用することをお勧めしますbits.By デフォルトでは、ssh-keygen
コマンドは1024ビットRSAキーを作成します。,
RSAキーを作成して構成するには、次のコマンドを使用します。2048
:
ssh-keygen -t rsa -b 2048 -C "[email protected]"
-C
フラグは、電子メールアドレスなどの引用符で囲まれたコメントを付けるオプションの方法です。sshキー。
次のような応答が表示されます。
Generating public/private rsa key pair.Enter file in which to save the key (/home/user/.ssh/id_rsa):
ガイダンスについては、一般的な手順に進みます。注OpenSSHバージョン7をお持ちの場合。,8以下、エンコーディングに関連する問題を考えてみましょう。
SSHキーペアを生成するための一般的な手順
ED25519またはRSAキーを作成しているかどうか、あなたはssh-keygen
command.At この時点で、コマンドラインに次のメッセージが表示されます(ED25519キーの場合)。
Generating public/private ed25519 key pair.Enter file in which to save the key (/home/user/.ssh/id_ed25519):
SSHキーペアがまだなく、デプロイキーを生成していない場合は、推奨されるファイルとディレクトリを受け入れます。 SSHクライアントは、追加の構成なしで結果のSSHキーペアを使用します。,または、新しいSSHキーペアを別の場所に保存することもできます。選択したディレクトリとファイル名を割り当てることがでまた、そのSSHキーペアを特定のホストに専用にすることもできます。
SSHキーを保存するファイルを割り当てた後、SSHキーのパスフレーズを設定できます。
Enter passphrase (empty for no passphrase):Enter same passphrase again:
成功すると、ssh-keygen
コマンドがidと秘密キーを保存した場所の確認が表示されます。,
必要に応じて、次のコマンドでパスフレーズを更新できます。
ssh-keygen -p -f /path/to/ssh_key
RSAキーとOpenSSHバージョン6.5から7.8まで
OpenSSH7.8より前は、RSAキーのデフォルトの公開キーフィンガープリントはMD5に基づいていたため、安全ではありません。
OpenSSHのバージョンがバージョン6.5からバージョン7.8(含む)の間にある場合は、ssh-keygen
を-o
オプションで実行して、秘密SSHキーをよりsecureOpenSSH形式で保存します。,
GitLabで使用するRSA SSHキーペアが既にある場合は、より安全なパスワード暗号化形式を使用するためにitをアップグレードすることを検討してください。 これを行うには、次のコマンドを使用します。
ssh-keygen -o -f ~/.ssh/id_rsa
または、次のコマンドを使用して、より安全な暗号化形式で新しいRSAキーを生成できます。
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
GitLabアカウントにSSHキーを追加する
これで、作成したSSHキーをGitLabアカウントにコピーできます。 これを行うには、次の手順に従います。
-
公開SSHキーを、情報をテキスト形式で保存する場所にコピーします。,次のオプションは、ed25519キーの情報をクリップボードに保存します。
macOS:
pbcopy < ~/.ssh/id_ed25519.pub
Linux(
xclip
パッケージが必要です):xclip -sel clip < ~/.ssh/id_ed25519.pub
windows上のGIT BASH:
cat ~/.ssh/id_ed25519.pub | clip
rsaキーを使用している場合は、それに応じて置き換えます。
またはローカルGitLabインスタンスURLに移動してサインインします。,
- 右上のアバターを選択し、[設定]をクリックします。
- SSHキーをクリックします。
- コピーした公開キーをキーテキストボックスに貼り付けます。
- キーに、Work Laptopやhome Workstationなど、タイトルテキストボックスにわかりやすい名前が含まれていることを確認してください。
- “Expires at”セクションの下にキーの(オプションの)有効期限を含めます。 (GitLab12.9で導入されました。)
- キーの追加ボタンをクリックします。
この手順を使用して”期限切れ”になっているSSHキーは、GitLabワークフローで有効です。,GitLabで構成された有効期限はSSHキー自体に含まれていないため、必要に応じて公開SSHキーをエクスポートすることができます。注公開SSHキーを手動でコピーした場合は、
ssh-ed25519
(またはssh-rsa
)で始まり、メールアドレスで終わるキー全体をコピーしてください。
二要素認証(2FA)
SSH経由での二要素認証(2FA)を設定することができます。,
すべてが正しく設定されていることをテストする
SSHキーが正しく追加されたかどうかをテストするには、ターミナルで次のコマンドを実行します(gitlab.com
をGitLabインスタンスのドメインに置き換えます)。
ssh -T [email protected]
SSH経由でGitLabに初めて接続するときは、次のことを確認する必要がありますあなたが接続しているgitlabホストの認証性。たとえば、に接続するときGitLab.com、答えるyes
GitLabを追加します。,信頼されたホストのリストへのcom:
The authenticity of host 'gitlab.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)? yesWarning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts.
既知のホストのリストに追加されたら、GitLabホストの正当性をもう一度確認する必要があります。 上記のcommandagainを実行すると、GitLabへの歓迎を受け取るはずです。@username
! メッセージ。,
ウェルカムメッセージが表示されない場合は、次のコマンドで詳細モードでssh
を実行することで問題のトラブルシューティングを行うことができます。
ssh -Tvvv [email protected]
非デフォルトSSHキーペアパスの操作
GitLab SSHキーペアにデフォルト以外のファイルパスを使用している場合は、SSHクライアントを設定して、Sshクライアントを設定します。gitlab秘密鍵を指し示します。
これらの変更を行うには、次のコマンドを実行します。
eval $(ssh-agent -s)ssh-add <path to private SSH key>
これらの設定を~/.ssh/config
ファイルに保存します。, GitLab専用のSSHキーの例を次に示します。
# GitLab.comHost gitlab.com Preferredauthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa# Private GitLab instanceHost gitlab.company.com Preferredauthentications publickey IdentityFile ~/.ssh/example_com_rsa
公開SSHキーは、アカウントにバインドされるため、GitLab固有のものである必要があります。あなたのSSHキーはSSH経由でコードをプッシュするときに持っている唯一の識別子なので、単一のユーザーに一意にマッピングする必要があります。,
リポジトリごとのSSHキー
作業しているリポジトリに応じて異なるキーを使用する場合は、リポジトリ内で次のコマンドを発行できます。
git config core.sshCommand "ssh -o IdentitiesOnly=yes -i ~/.ssh/private-key-filename-for-this-repository -F /dev/null"
これはSSHエージェントを使用せず、少なくともGit2.10が必要です。
単一のGitLabインスタンス上の複数のアカウント
リポジトリごとのメソッドは、単一のGitLabインスタンス内の複数のアカウントを使用する
または、~.ssh/config
内のホストに直接エイリアスを割り当てることもできます。, SSHおよび、拡張子により、Gitは、IdentityFile
がHost
ブロックの外側に設定されている場合、ログインに失敗します.ssh/config
。 これは、SSHがIdentityFile
エントリをアセンブルする方法のためであり、IdentitiesOnly
をyes
に設定することによって変更されません。 IdentityFile
エントリはSSHキーペアの秘密鍵を指す必要があります。
Host
エイリアスは、効率と透明性のためにuser_1.gitlab.com
およびuser_2.gitlab.com
として定義されています。, このタイプのエイリアスを使用すると、git remote
サブコマンドなどの他のツールを使用するときに簡単に立ち上がることができます。 SSHwouldとして任意の文字列を理解しますHost
エイリアスしたがって、Tanuki1
およびTanuki2
、それらが指す場所についてはほとんどコンテキストを与えていないにもかかわらず、それらも機能します。,gitlab
リポジトリのクローン作成は通常、次のようになります。
git clone [email protected]:gitlab-org/gitlab.git
user_1
のためにクローンを作成するには、gitlab.com
をSSHエイリアスuser_1.gitlab.com
:
git clone git@<user_1.gitlab.com>:gitlab-org/gitlab.git
git remote
コマンドを使用して、以前に複製されたリポジトリを修正します。
以下の例では、リモートリポジトリがorigin
としてエイリアスされていることを前提としています。,
git remote set-url origin git@<user_1.gitlab.com>:gitlab-org/gitlab.git
デプロイキー
デプロイキーに関するドキュメントをお読みください。
アプリケーション
Eclipse
EGitを使用している場合は、SshキーをEclipseに追加できます。
GitLabサーバー上のSSH
GitLabはシステムインストールされたSSHデーモンと統合し、すべてのアクセス要求が処理されるユーザー(通常はgit
)を指定します。 SSH経由でGitLabサーバーに接続するユーザーは、ユーザー名の代わりにSSHキーによって識別されます。,
GitLabサーバー上で実行されるSSHクライアント操作は、thisuserとして実行されます。 このユーザーのSSH設定を変更して、これらの要求を認証するための秘密鍵を提供することは可能ですが、このプラクティスはサポートされておらず、重大なセキュリティリスクをもたらすため、強く推奨されません。
GitLabチェックプロセスには、この条件のチェックが含まれており、サーバーが次のように設定されている場合は、このセクションに指示します。
できるようになったらすぐにカスタム設定を削除します。, これらのcustomizationsare明示的に支持していませんが。
Microsoft Windowsのオプション
Windows10を実行している場合、Windows Subsystem for Linux(WSL)およびその最新のWSL2バージョンは、GitおよびSSHクライアントを含むさまざまなLinuxディストリビューションのインストールをサポートしています。
現在のバージョンのWindowsでは、gitとSSHクライアントをwindows用gitでインストールすることもできます。,
代替ツールは次のとおりです。
- Cygwin
- PuttyGen
トラブルシューティング
Git cloneで[email protected]'s password:
SSHセットアップに何か問題があります。,
- SSHキーペアを正しく生成し、GitLabプロファイルにパブリックSSHkeyを追加したことを確認してください
-
ssh-agent
このドキュメントのdocumentedearlierとして -
ssh -Tv [email protected]
(example.com
を
に置き換えて、example.com
をgitlabドメイン)