正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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を有効にします:

  1. /etc/gitlab/gitlab.rbを編集します:

    gitlab_sshd['enable'] = true
    gitlab_sshd['listen_address'] = '[::]:2222' # Adjust the port accordingly
  2. オプション。デフォルトでは、gitlab-sshdのキーが/var/opt/gitlab/gitlab-sshdに存在しない場合、LinuxパッケージインストールはSSHホストキーを生成します。この自動生成を無効にする場合は、次の行を追加します:

    gitlab_sshd['generate_host_keys'] = false
  3. ファイルを保存して、GitLabを再設定します:

    sudo gitlab-ctl reconfigure

デフォルトでは、gitlab-sshdgitユーザーとして実行されます。その結果、gitlab-sshdは1024より小さい特権ポート番号では実行できません。これは、ユーザーがgitlab-sshdポートでGitにアクセスするか、SSHトラフィックをgitlab-sshdポートに転送してこれを隠すロードバランサーを使用する必要があることを意味します。

新しく生成されたホストキーがOpenSSHホストキーと異なるため、ホストキーに関する警告が表示される場合があります。これが問題である場合は、ホストキーの生成を無効にし、既存のOpenSSHホストキーを/var/opt/gitlab/gitlab-sshdにコピーすることを検討してください。

次の手順では、OpenSSHをgitlab-sshdに切り替えます:

  1. gitlab-shellチャートのsshDaemonオプションをgitlab-sshdに設定します。例:

    gitlab:
      gitlab-shell:
        sshDaemon: gitlab-sshd
  2. Helmアップグレードを実行します。

デフォルトでは、gitlab-sshdは以下をリッスンします:

  • ポート22(global.shell.port)での外部リクエスト。
  • ポート2222(gitlab.gitlab-shell.service.internalPort)での内部リクエスト。

Helmチャートで異なるポートを設定できます。

PROXYプロトコルのサポート

gitlab-sshdの前面にあるロードバランサーにより、GitLabはクライアントIPアドレスの代わりにプロキシIPアドレスをレポートします。実際のIPアドレスを取得するために、gitlab-sshdPROXYプロトコルをサポートしています。

PROXYプロトコルを有効にするには:

  1. /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ライブラリを参照してください。

  2. ファイルを保存して、GitLabを再設定します:

    sudo gitlab-ctl reconfigure
  1. gitlab.gitlab-shell.configオプションを設定します。例:

    gitlab:
      gitlab-shell:
        config:
          proxyProtocol: true
          proxyPolicy: "use"
  2. Helmアップグレードを実行します。