Linux-ポート上のSSHをローカルネットワーク上の別のマシンにリダイレクトする


1

仮想ネットワーク上にKVMゲストマシンがあります。のようなIPアドレスがあります192.168.122.65。ホストマシンはパブリックインターネットに接続されています。ホストマシンでターミナルを開くと、を入力してゲストにSSH接続できるssh user@192.168.122.65ので、正常に動作することがわかります。

ここで、インターネットを介して任意のコンピューターからゲストにSSH接続したいと思います。ホストマシンを構成してそれを可能にするにはどうすればよいですか?私は多くのルールを試しましたが、iptablesこれまでのところ何も助けていません。

更新:これまでのところ、このソリューションは機能しているようですが、サーバーを再起動しようとしませんでした:https : //serverfault.com/a/170641/264678

回答:


1

ホストマシンがSSHサーバーソフトウェアも実行しており、インターネットからアクセスできる場合は、コマンドを使用できますssh -L 22065:127.0.0.1:22 user@192.168.122.65。この-Lオプションは次の方法で使用されます。

 -L [bind_address:]port:host:hostport
             Specifies that the given port on the local (client) host is to be
             forwarded to the given host and port on the remote side.  This
             works by allocating a socket to listen to port on the local side,
             optionally bound to the specified bind_address.  Whenever a con‐
             nection is made to this port, the connection is forwarded over
             the secure channel, and a connection is made to host port
             hostport from the remote machine.  Port forwardings can also be
             specified in the configuration file.  IPv6 addresses can be spec‐
             ified by enclosing the address in square brackets.  Only the
             superuser can forward privileged ports.  By default, the local
             port is bound in accordance with the GatewayPorts setting.  How‐
             ever, an explicit bind_address may be used to bind the connection
             to a specific address.  The bind_address of “localhost” indicates
             that the listening port be bound for local use only, while an
             empty address or ‘*’ indicates that the port should be available
             from all interfaces.

ホストのIPアドレスが10.0.0.5であるとします。インターネット上のシステムから、コマンドを使用してホストのポート22065への接続を確立できますssh -p 22065 user@10.0.0.5。注:ホストのパブリックIPアドレスを使用している場合でも、ゲストシステムの有効なユーザーIDとパスワードを提供する必要があります(例の目的でプライベートIPアドレス範囲10.xxxのアドレスを使用しています)。接続性は実際にゲストにトンネリングされます。

ホストのポート22065への接続が確立されると、ホストから192.168.122.65のゲストシステムへの最初のSSH接続によって確立されたSSHトンネルを介して転送されます。インターネット上のSSHクライアントに関しては、ポート22065でゲストシステムに直接接続しますが、実際には10.0.0.5ホストからSSHトンネルを介してそのシステムのポート22に接続しています。注:これが機能するためには、ホストからゲストシステムへのSSH接続がその時点で起動している必要があります。

私が置いた場所に127.0.0.1はputもできますが192.168.122.65、接続は外部のシステムではなく、localhostアドレス、つまりゲスト自体への接続なので、使用します127.0.0.1

必要なファイアウォールルールについては、ホストと、ポート22065または選択したポートへの着信TCP接続を許可するインターネットとの間のファイアウォールにルールを設定する必要があります。ゲストシステムに追加のファイアウォールルールは必要ありません。


いい答えをありがとう!SSHトンネルをセットアップすることはできますが、後でポートを転送したかったのは、後でHTTPサーバーでも同じことをしたいからです。
アロンロリンツ

私の質問に質問を追加しました
アロンロリンツ

0

まず、VMにsshしないでください。
代わりtmuxに、KVMホストにアクセスして接続します。ここで、必要な数のSSHセッションを開くことができます。

これのどれかがあなたが望むものに近く聞こえるかどうか教えてください、そして私は詳しく説明します。

早くて汚い:

  • でリバーストンネルをssh -R設定します。KVMホストで実行し、ゲートウェイ(インターネットに面するルーター)を:22設定して、リバーストンネルで設定したポートでKVMホストに転送またはDMZ します。

永続的かつ自給自足:

  • 2つのネットワークをのような仮想ネットワークデバイスでブリッジし、tun同様にゲートウェイをセットアップします。

簡単:

  • それを行うSaaSサービスがあります。多くの場合、ユースケースを満たす無料の階層があります。

答えてくれてありがとう。しかし、後で他のサービス(HTTPなど)でやらなければならないかもしれないので、本当にポートを転送したいです。
アロンロリンツ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.