リバースSSHトンネル

リバースSSHトンネル

私のローカルネットワークにはgitlabサーバーがあり、ネットワーク外からSSH経由でアクセスできるサーバーがあります。

以下を使用するときにSSHを使用できるようにサーバーを構成する方法はありますか?

ssh [email protected]

ローカルネットワークの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]gitssh://[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クライアントに透過的です。

おすすめ記事