web-dev-qa-db-ja.com

SSHトンネルを作成する方法

はい、これがセットアップです。私はローカルネットワークの外にいて、iSSH(iPad上)を使用してホームネットワークに接続しています。これまでのところ、トンネルを作成してホームメディアセンターをlocalhostにリダイレクトしていました。したがって、アドレスバーにlocalhost:8080と入力して、自宅のメディアセンターを参照できます。

local port : 8080
destination Host : localhost
destination port 8080

それはうまくいきました。

次に、さらに一歩進んで、接続しているメディアセンターに、192.168.1.112:8800をリダイレクトするように指示します。これは、メディアセンターからアクセスし、基本的にメディアセンターをゲートウェイとして使用するマシンです。 ssh -Lを使用する必要があると思いますが、それが正しい方法かどうかはわかりません。

このトンネルを作成するにはどうすればよいですか?

4
fingertwist

IPadで接続しているローカルポート(太字)とメディアセンターでアクセスしているリモートポート(太字ではない)を区別するために太字を使用しています。

これはあなたがやってきたことのようです:

ssh -L 808:localhost:8080 [email protected]

「-L 808:」は、リモートリソースを取得し、それをローカルポート(この場合は808)にバインドすることを意味します。 iPadでlocalhost:808と入力して、このリモートリソースに接続します。次の部分「localhost:8080」(メディアセンターの観点から)は、iPadのポート808にバインドしているリソースのホスト名とポートです。これは、メディアセンターがネットワーク上で認識できる任意のホスト名またはIPアドレスとポートに変更できます。

192.168.1.112:8800に接続すると、次のようになります。

ssh -L [aLocalPort]:192.168.1.112:8800[email protected]

次に、iPadで接続するために使用するプログラムにlocalhost:[aLocalPort]と入力して、192.168.1.112:8800に接続できます。 。 (ここで、[aLocalPort]は9000などの未使用のローカルポートです。便宜上、宛先(8800)で使用されているのと同じポートを使用できます。もし良かったら)

5
James T

はい、-L 192.168.1.112:8800を追加できます。これにより、ローカルマシン(つまりクライアント)のポートがトンネルにバインドされ、リモートサーバーによって指定されたアドレスとポートに転送されます。

1
M'vy

私はいくつかのスケッチを描きました

Ssh tunnelコマンドが入力されるマシンは、"your Host"と呼ばれます。

ssh tunnel starting from local


ssh tunnel starting from remote

前書き

  1. ローカル:-L Specifies that the given port on the local (client) Host is to be forwarded to the given Host and port on the remote side.

    _ssh -L sourcePort:forwardToHost:onPort connectToHost_は、sshを使用してconnectToHostに接続し、すべての接続試行をlocalsourcePortからonPortというマシンのポートforwardToHostに転送します。このポートには、connectToHostマシンからアクセスできます。

  2. リモート:-R Specifies that the given port on the remote (server) Host is to be forwarded to the given Host and port on the local side.

    _ssh -R sourcePort:forwardToHost:onPort connectToHost_は、sshを使用してconnectToHostに接続し、すべての接続試行をremotesourcePortからonPortというマシンのポートforwardToHostに転送します。これは、ローカルマシンからアクセスできます。

あなたの例

2番目の画像はこのトンネルを表しています。 remotehostはメディアセンターです。 farawayhostは、対象のピンクのポートを備えた192.168.1.112マシンです(描画ポート_456_ですが、場合はポート_8800_)。したがって、コマンドは次のようになります。

_ssh -L 123:192.168.1.112:8800 mediacenter
_

もちろん、緑のポートの番号_123_を好きなように変更して、経由でアクセスすることもできます。

_localhost:123
_

ここでも、_123_は、緑色のポートの任意の(トンネリングコマンドで選択された)ポート番号です。

1
erik

実際には答えではありませんが、トンネルにはプレーンsshの代わりにautosshを使用することをお勧めします。タイムアウトなどが発生すると、トンネルが自動的に再確立されます(sshキーを設定している場合)。

0
freethinker