web-dev-qa-db-ja.com

SSHトンネルにホスト名を割り当てる方法

MacBookからホスティングプロバイダーの専用サーバーへのトンネルを確立するためにssh [email protected] -g -L 4321:localhost:28017を使用しています。それはうまくいきます。次に、リモートサーバー上のいくつかの管理サイト(MongoDBステータスページ、RabbitMQページなど、すべて異なるポート上)にアクセスしたいと思います。それらのすべては、リモートマシン上の127.0.0.1にバインドされています。このsshコマンドをどのように調整できますか

  • トンネルに名前を割り当てて、たとえばブラウザの「my.tunnel.name」
  • ブラウザでリモートポートを定義できるようにするため。さまざまなサイトを呼び出すことができるように、my.tunnel.name:portに接続したい

これはsshで可能ですか?私は2日間マニュアルページを読んでググったが、動作していないようだ。

--edit 2012-06-01 23:36--提供された回答とコメントのおかげで、ポート転送は現在使用しています

ssh [email protected] -D 4321

これをブラウザーでプロキシーとして設定すると、ブラウザーはlocalhost:anyportへのすべての要求を、リモートサーバーで行われた場合と同様に処理します。ブラウザはリモートサーバーサイト専用であるため、名前を使用する必要はなくなりました。

18
brains_at_work

あなたが説明することは不可能です。しかし、まだ良いニュースがあります:

ただし、SSHサーバーとの動的接続を確立することは可能です。これにより、ローカルコンピューターのポートが開き、ブラウザーのプロキシ設定をポイントして、トンネルをプロキシサーバーとして使用できるようになります。ただし、SSHサーバーが稼働しているマシンでブラウザーが実行されているかのように、ブラウザーにホスト名/ IPとポートを入力する必要があります。

コマンドは次のようになります:ssh [email protected] -D 1234
次に、ブラウザのプロキシがlocalhost:1234を指すようにします。

したがって、サーバーAにトンネリングしてサーバーBに接続する場合は、サーバーAで実行されているブラウザーに入力するアドレスをブラウザーに入力します。サーバーAで実行されているブラウザーがサーバーBに接続できなかった場合(サーバーBのプロセスは127.0.0.1でのみリッスンしますが、それでも接続できませんでした。サーバーが1つしかないようですが、これが明確であることを確認しました。

サーバーが1つしかない場合は、動的接続でそのサーバーにトンネルし、プロキシを設定します。次に、たとえば「localhost:1234」をブラウザに入力すると、ポート1234のリモートサーバーで実行されているサービスに接続します。

Securit Side Note:rootがSSHで接続できるサーバーを決してセットアップしないでください!深刻なセキュリティ欠陥。通常のユーザーアカウント(suまたはSudoが許可されている)を作成し、そのユーザーとしてSSHでログインします。

13
Chris S

ループバックアダプターが基本的に127.0.0.0/8ネットワーク内の任意のアドレスに応答するという事実を使用して、名前を割り当てることができます。

したがって、ポート4321にバインドする代わりに、127.1.2.3:4321にバインドできます。次に、foo.barが127.1.2.3にマップされるように、使用したループバックアドレスに名前をマップするHostエントリをセットアップします。

管理ワークステーションのSSH構成では、ループバック範囲内のいくつかのアドレスにバインドするように構成された多くのトンネルがあり、Hostファイルにエントリがあるので、同じポートを使用して多くのトンネルを並列に開き、それらを介してそれらを区別します名前。

このように接続すると

ssh [email protected] -g -L 127.1.2.3:4321:localhost:28017

そして、あなたのhostsファイルはこのような行を持っています。

127.1.2.3 my.tunnel.name

その後、ローカルマシンからmy.tunnel.name:4321に接続できるはずです。

ネットワーク上に追加のIPアドレススペースがある場合、sshクライアントが接続されている場合は、イーサネットインターフェイスにセカンダリアドレスを割り当て、実際のIPの1つを使用し、他のシステムで可能にする場合はDNSにエントリをセットアップすることもできます。 SSHトンネルを使用します。

-Lオプション-L [bind_address:]port:Host:hostportを使用すると、ローカルシステム上の有効なIPアドレスを使用してバインドできます。他のホストがsshトンネル経由で接続できるようにする場合は、-gオプションも含める必要があります。

25
Zoredache

SSHトンネルで動的なアプリケーションレベルのポート転送(基本的にはsocksプロキシ)を作成し、これを経由してアプリケーションをポイントします。動的トンネルを作成するには、次のように接続します。

ssh [email protected] -D 127.0.0.1:31337

次に、これをSOCKSv5プロキシとして使用するようにアプリケーションを構成します。

これにバインドされたホスト名が必要な場合は、127.0.0.1を指す/etc/hostsエントリを追加するだけですが、より適切な方法は、最初のトンネルに127.0.0.2を追加し、このトンネルのホストエントリ127.0を追加することです。 2番目のトンネルには.0.3、このトンネルには別のホストエントリなど。127.0.0.1のエイリアスを追加すると、このエイリアスがlocalhostの他のコマンドルックアップに表示され、混乱することがあります。

これをウェブブラウザでスムーズに使用するには、プロキシアドオンを使用できます。例として、Chromeウェブブラウザを使用します。このブラウザには、Proxy Switchy!というアドオンを使用します。ダウンロードできます。ここに:
https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj

このアドオンの構成では、いくつかの個別のプロキシを定義し、ホスト/ URLの正規表現をバインドして特定のプロキシを使用できます。これにより、手動で切り替えることなく、常に適切なトンネルを介して適切にリダイレクトされます。手順についてさらに説明が必要な場合はお知らせください。

5
Mattias Ahnberg