gitlab-sshd
- GitLab 14.5で導入された、セルフマネージメント顧客向けのエクスペリメント。
- GitLab 15.1ではCloud Native GitLabで、GitLab 15.9ではLinuxパッケージで本番環境での使用が可能になりました。
gitlab-sshd はGoで書かれたスタンドアロンのSSHサーバです。gitlab-shell パッケージの一部として提供されています。OpenSSHの代替としてメモリ使用量が少なく、プロキシの後ろで動作するアプリケーションのためにIPアドレスによるグループアクセス制限をサポートしています。
gitlab-sshd はSSH オペレーションを提供する OpenSSH の軽量な代替ソフトです。OpenSSH が制限されたシェルのアプローチを使っているのに対し、 gitlab-sshdOpenSSH は最新のマルチスレッドサーバアプリケーションのように 動作し、入ってくるリクエストに応答します。大きな違いは、OpenSSH が SSH をトランスポートプロトコルとして使っているのに対し、gitlab-sshd はリモートプロシージャコール (Remote Procedure Calls: RPC) を使っていることです。詳しくはブログ記事をご覧ください。
GitLab Shellの機能はGitオペレーションだけにとどまりません。
OpenSSH からgitlab-sshd への乗り換えを検討している場合は、以下の点を考慮してください:
-
gitlab-sshdは PROXY プロトコルをサポートしています。HAProxy のような、PROXY プロトコルに依存している プロキシサーバの背後でも動作します。PROXY プロトコルはデフォルトでは有効になっていませんが、有効にすることはできます。 -
gitlab-sshdは SSH 証明書をサポートしていません。証明書の追加についてはイシュー655を参照してください。
有効にするgitlab-sshd
gitlab-sshd を使用するには:
以下の手順で、OpenSSH とは別のポートでgitlab-sshd を有効にします:
-
/etc/gitlab/gitlab.rbを編集します:gitlab_sshd['enable'] = true gitlab_sshd['listen_address'] = '[::]:2222' # Adjust the port accordingly -
オプション。デフォルトでは、Linux パッケージインストールは
/var/opt/gitlab/gitlab-sshdに SSH ホストキーが存在しない場合、gitlab-sshdの SSH ホストキーを生成します。 この自動生成を無効にしたい場合は、この行を追加してください:gitlab_sshd['generate_host_keys'] = false -
ファイルを保存して GitLab を再設定してください:
sudo gitlab-ctl reconfigure
デフォルトでは、gitlab-sshd はgit ユーザーとして実行されます。そのため、gitlab-sshd 1024以下の特権ポート番号では実行 gitlab-sshdできません。gitlab-sshd つまり、ユーザーはこの gitlab-sshdポートgitlab-sshd 番号でGitにアクセス gitlab-sshdするか、ロードバランサーを使ってSSHトラフィックをgitlab-sshd 。
新しく生成されたホスト鍵が OpenSSH のホスト鍵と異なるため、ユーザーはホスト鍵の警告を見るかもしれません。これがイシューになる場合は、ホスト鍵の生成を無効にして、既存の OpenSSH ホスト鍵を/var/opt/gitlab/gitlab-sshd にコピーすることを検討してください。
以下の手順は、OpenSSH をgitlab-sshd に切り替えるものです:
-
gitlab-shellチャートsshDaemonオプションをgitlab-sshdに設定します。例えばgitlab: gitlab-shell: sshDaemon: gitlab-sshd -
Helm のアップグレードを実行します。
デフォルトでは、gitlab-sshd をリッスンします:
- 外部からのリクエストはポート 22 (
global.shell.port) で受け付けます。 - 内部リクエストはポート 2222 (
gitlab.gitlab-shell.service.internalPort)。
Helmチャートで異なるポートを設定できます。
PROXYプロトコルのサポート
ロードバランサがgitlab-sshdGitLabの gitlab-sshd前で使用されている場合gitlab-sshd、GitLabはクライアントの実際のIPアドレスの代わりにプロ gitlab-sshd キシの gitlab-sshdIPアドレスを報告します。 gitlab-sshd
PROXYプロトコルを有効にするには
-
/etc/gitlab/gitlab.rbを編集します:gitlab_sshd['proxy_protocol'] = true # Proxy protocol policy ("use", "require", "reject", "ignore"), "use" is the default value gitlab_sshd['proxy_policy'] = "use" -
ファイルを保存して GitLab を再設定してください:
sudo gitlab-ctl reconfigure
-
gitlab.gitlab-shell.configオプションを設定します.例えばgitlab: gitlab-shell: config: proxyProtocol: true proxyPolicy: "use" -
Helm のアップグレードを実行します。