DockerエンジンがインストールされたUbuntu 16.04を実行しているサーバーがあります。要求されたドメインに基づいてGitLab DockerコンテナにSSHを転送する方法
私はGitLabサービス(もちろん他のものと一緒に他の多くのコンテナ)を実行しています。ドッカーのネットワークアドレスGITLAB_IP
としましょう。
VIRTUAL_HOST
環境変数に基づいて、外部からのHTTP要求をプロキシするのにnginx-proxyを使用しています。
*.mydomain.com
を対象とするすべてがmydomain.com
になり、同じホストで解決されるように、DNSが設定されています。
gitlab.mydomain.com
へのリクエストは私のGitLabコンテナによって提供されていますが、mydomain.com
に行くリクエストはメインのnginxコンテナによって提供されます。
すべてはポート80(および443)でうまくいきます。
今、私はssh上でgitを使用できるようにしたいと思います。私は何を達成しようとしていることは、私は
> ssh mydomain.com
をすれば、私は私のホストサーバのターミナルに終わるだろうということです。私は
> ssh gitlab.mydomain.com
をすれば、その後、私はGitLabコンテナのターミナルで終わるしたいです。
私はホスト上のいくつかの未使用ポートにコンテナのポート22をマップできることを知っています。そのため、たとえば、ssh-ingによってコンテナにアクセスできます。ポート10022ですが、私はそれをきれいで明瞭な方が好きです。
特定のドメインが検出されたときに、ホストマシン上のsshサーバーを何らかの形でプロキシとして動作させる方法はありますか?
ユーザ名に基づいてリダイレクトを処理するためにsshデーモン(または多分いくつかのログインスクリプト?)を設定する可能性はありますか?常に単一のGitLabインスタンスがあることを考慮して、私はGitLabコンテナにリダイレクト/再接続/トンネルユーザ 'git'を作れるかどうか疑問に思っています。 –
はい、これは可能です。複数のユーザーがいるopensshを実行している "マシン"を設定することができます。各ユーザは、サーバー側で適切なsshコマンドを実行して適切な場所にドロップする独自の強制コマンドを持つことができます。 – programmerq
あなたの回答に感謝します。 [これは解決策になるかもしれません](http://stackoverflow.com/questions/33042817/have-sshd-forward-logins-of-git-user-to-a-gitlab-docker-container)のようです。 –