私のローカルネットワークにはgitlabサーバーがあり、ネットワーク外からSSH経由でアクセスできるサーバーがあります。
以下を使用するときにSSHを使用できるようにサーバーを構成する方法はありますか?
ローカルネットワークのGitlabサーバーに送信しますか? Nginxリバースプロキシに似ていますが、sshを使用します。
編集する:
周りに何かが見つかりました。こここれが私が望むようです。
ロードバランサーによるアクセス
より標準的なGit環境を提供するには、指定されたGitLabノードを指すように外部ロードバランサーを手動で設定して構成できます。これにより、トラフィックはポート22からGitLabノードのポート2222にルーティングされます。その後、DNSレコードがロードバランサーを指すようにすることができます。
これは私がやりたいことのように見えますが、どうすれば達成できますか?
編集2:
以下は、私がやろうとしていることを明確に説明する図です。
(赤いリードもインターネットを通過する必要があります。)
ベストアンサー1
nginxなどのHTTPサーバーは要求のHTTP / 1.1ホストヘッダーに送信されるため、ホスト名に基づいてプロキシを実行できます。 SSH には仮想ホストの概念がなく、クライアントはホスト名をまったく送信しません。
3つのオプションがあります。
- ポート転送を使用してgitlabサーバーを直接使用できるようにします。
- (追加)IPv4またはIPv6アドレスを介してgitlabサーバーを使用できるようにします。
- ネットワーク上にSSHトンネルを作成し、このトンネルを介してGitサーバーへのSSH接続をプロキシします。
フォワードポート
これはおそらく「パブリックサーバー」を妨げる最も簡単な方法です。ポート2222を192.168.2.26:22に転送するようにゲートウェイを設定します。その後、接続を使用します。の場合は、同様のURLを使用してください。ssh -p2222 [email protected]
git
ssh://[email protected]:2222/repo.git
または、次のようにファイルを生成する場合、またはを使用できます。ssh://[email protected]/repo.git
[email protected]:repo.git
~/.ssh/config
Host git.example.com
Port 2222
IPv4またはIPv6アドレスの追加
ホームネットワークがある場合、IPv4アドレスを取得することはできませんが、一部の商用プロバイダはIPv4アドレスを取得できます。ネットワークがIPv6(エンドツーエンド)をサポートしている場合は、不快なプロキシやNATハッキングなしで一般的なルーティングを使用できます。
SSHトンネル
ProxyCommand
このオプションを使用して、SSH接続がプロキシされるコマンドを指定できますgit.example.com
。あなたの場合、「パブリックサーバー」はプロキシなので、コマンドはそのサーバーに接続する必要があります。
構成部分から始めましょう~/.ssh/config
。
Host git.example.com
ProxyCommand ssh -W %h:%p [email protected]
このコードでは、オプションは標準入力と出力を対応するホスト(git.example.com)に-W %h:%p
拡張してリダイレクトします。-W git.example.com:22
これにより、ローカルSSHクライアントがgitlabサーバーと通信できます。たとえば、任意のURLを再利用でき[email protected]:repo.git
、プロキシはgitクライアントに透過的です。