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


16

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

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

これはsshで可能ですか?マニュアルページを読み、2日間グーグルで検索しましたが、うまくいかないようです。

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

ssh user@remote.server -D 4321

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

回答:


12

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

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

コマンドは次のようになりssh user@server.example.com -D 1234
ます。ブラウザのプロキシをに向けlocalhost:1234ます。

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

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

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


2
-D 1234(動的ポート転送)を使用する必要があるときに、-L 1234(ローカルポート転送)を使用しています。また、おそらく-gの使用を避けてください。-gは、リモートホストがフォワードに接続できることを意味します。
マティアスアンバーグ

ありがとう、クリス。私はすでにそれを試しました。指定したポートだけでsshコマンドを使用できません。エラーを返します:「悪いローカル転送仕様 '1234'」
brains_at_work

@ matthias-ahnberg:素晴らしい、それでうまくいきました。動的転送を使用すると、ポートをプロキシとして使用できるようになり、localhost:someport呼び出しがリモートサーバーに転送されます。
-brains_at_work

@MattiasAhnbergうわー、なんて脳みそ。訂正していただきありがとうございます。
クリスS

このプロセスに従いましたが、Firefoxで「接続がリセットされました」というエラーが表示されました。
リヴ14

23

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

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

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

このように接続すると

ssh root@my.server.ip -g -L 127.1.2.3:4321:localhost:28017

そして、hostsファイルには次のような行があります。

127.1.2.3 my.tunnel.name

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

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

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


osxでループバックにIPを追加する必要がありました。ifconfig l0 alias 127.0.1.1 255.255.255.0それ以外の場合の素晴らしいヒント!
デビアン

1
シェルを作成したくない場合-Nは、コマンドの最後で実行してください。これにより、SSH接続だけでなくトンネルであることを覚えやすくなります。
mlissner

使用するとき127.1.2.3、macbook:ifconfig lo0 alias 127.1.2.3 255.255.255.0でこれを行う必要がありました。これは、127.1.2.3interfaceに新しいアドレスとして追加されますlo0
ドンリー

5

SSHトンネルを使用して動的なアプリケーションレベルのポート転送(基本的にはソックスプロキシ)を作成し、アプリケーションをこの1つを通してポイントします。動的トンネルを作成するには、次のように接続します。

ssh user@host.domain.com -D 127.0.0.1:31337

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

ホスト名をこれにバインドしたい場合は、/etc/hosts127.0.0.1を指すエントリを追加するだけですが、もっときれいな方法は、最初のトンネルに127.0.0.2を追加し、このトンネルに2番目に127.0.0.3のホストエントリを追加することです127.0.0.1のエイリアスを追加すると、このエイリアスがlocalhostの他のコマンド検索に表示されることがあり、混乱を招く可能性があります。

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

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


アドオンのヒントをありがとう。私もChromeを使用しているため、FireFoxを開いたままにする必要はありません。
brains_at_work
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.