gitlab-sshd
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
gitlab-sshdは、Goで記述されたスタンドアロンのSSHサーバーです。これは、OpenSSHの軽量な代替手段です。これはgitlab-shellパッケージの一部であり、SSH操作を処理します。
OpenSSHは制限されたシェルアプローチを使用しますが、gitlab-sshdには次のような特徴があります:
- 最新のマルチスレッドサーバーアプリケーションとして機能します。
- SSHトランスポートプロトコルの代わりに、リモートプロシージャ呼び出し(RPCs)を使用します。
- OpenSSHよりも使用するメモリが少なくなります。
- プロキシの背後で実行されているアプリケーションに対して、IPアドレスによるグループアクセス制限をサポートします。
実装の詳細については、ブログ投稿を参照してください。
OpenSSHからgitlab-sshdへの切り替えを検討している場合は、以下を検討してください:
- PROXYプロトコル:
gitlab-sshdはPROXYプロトコルをサポートしており、HAProxyなどのプロキシサーバーの背後で実行できます。この機能はデフォルトでは有効になっていませんが、有効にできます。 - SSH証明書:
gitlab-sshdはSSH証明書をサポートしていません。詳細については、issue 655を参照してください。 - 2FAリカバリーコード:
gitlab-sshdは2FAリカバリーコードの再生成をサポートしていません。2fa_recovery_codesを実行しようとすると、エラー:remote: ERROR: Unknown command: 2fa_recovery_codesが発生します。詳細については、ディスカッションを参照してください。
GitLab Shellの機能は、Git操作を超えて拡張され、GitLabとのさまざまなSSHベースのインタラクションに使用できます。
gitlab-sshdを有効にする
gitlab-sshdを使用するには:
次の手順では、OpenSSHとは異なるポートでgitlab-sshdを有効にします:
/etc/gitlab/gitlab.rbを編集します:gitlab_sshd['enable'] = true gitlab_sshd['listen_address'] = '[::]:2222' # Adjust the port accordinglyオプション。デフォルトでは、
gitlab-sshdのキーが/var/opt/gitlab/gitlab-sshdに存在しない場合、LinuxパッケージインストールはSSHホストキーを生成します。この自動生成を無効にする場合は、次の行を追加します:gitlab_sshd['generate_host_keys'] = falseファイルを保存して、GitLabを再設定します:
sudo gitlab-ctl reconfigure
デフォルトでは、gitlab-sshdはgitユーザーとして実行されます。その結果、gitlab-sshdは1024より小さい特権ポート番号では実行できません。これは、ユーザーがgitlab-sshdポートでGitにアクセスするか、SSHトラフィックをgitlab-sshdポートに転送してこれを隠すロードバランサーを使用する必要があることを意味します。
新しく生成されたホストキーがOpenSSHホストキーと異なるため、ホストキーに関する警告が表示される場合があります。これが問題である場合は、ホストキーの生成を無効にし、既存のOpenSSHホストキーを/var/opt/gitlab/gitlab-sshdにコピーすることを検討してください。
次の手順では、OpenSSHをgitlab-sshdに切り替えます:
gitlab-shellチャートのsshDaemonオプションをgitlab-sshdに設定します。例:gitlab: gitlab-shell: sshDaemon: gitlab-sshdHelmアップグレードを実行します。
デフォルトでは、gitlab-sshdは以下をリッスンします:
- ポート22(
global.shell.port)での外部リクエスト。 - ポート2222(
gitlab.gitlab-shell.service.internalPort)での内部リクエスト。
Helmチャートで異なるポートを設定できます。
PROXYプロトコルのサポート
gitlab-sshdの前面にあるロードバランサーにより、GitLabはクライアントIPアドレスの代わりにプロキシIPアドレスをレポートします。実際のIPアドレスを取得するために、gitlab-sshdはPROXYプロトコルをサポートしています。
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_sshd['proxy_policy']オプションの詳細については、go-proxyprotoライブラリを参照してください。ファイルを保存して、GitLabを再設定します:
sudo gitlab-ctl reconfigure
gitlab.gitlab-shell.configオプションを設定します。例:gitlab: gitlab-shell: config: proxyProtocol: true proxyPolicy: "use"Helmアップグレードを実行します。