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-sshd
OpenSSH は最新のマルチスレッドサーバアプリケーションのように 動作し、入ってくるリクエストに応答します。大きな違いは、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-sshd
GitLabの gitlab-sshd
前で使用されている場合gitlab-sshd
、GitLabはクライアントの実際のIPアドレスの代わりにプロ gitlab-sshd
キシの gitlab-sshd
IPアドレスを報告します。 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 のアップグレードを実行します。