ssh portポート転送の方法をsshで転送する



ポートフォワーディングは2つのアプリケーション、通常TCP/IPアプリケーションの相互作用のタイプです.SSHはホスト上のクライアントアプリケーションからサービスリクエストを傍受し、SSH接続の反対側にリクエストを運ぶSSHセッションを作成します.反対側は、リモートホスト上のアプリケーションサーバーに送信する前に、要求を復号化します.ポートフォワーディングは、伝統的に確保されていないアプリケーション間の通信を安全にするために使用することができます.彼らはまた、可能ではない通信のために使用することができます、例えば、IT管理者は、ファイアウォールを備えた外部アクセスからホスト上の特定のポートをセキュリティを改善するためにブロックします.そして、ポート推進で、それはリモートマシンで実行しているそれらのアプリケーションにアクセスすることが可能になります.以前は、SSHエージェントフォワーディングと呼ばれる異なるタイプのフォワーディングについて話しました.これは、リモートホストを通して、第2のリモートホストにあなたの秘密鍵を必要とすることなく公開鍵認証を使用している第3のリモートホストに、1つのコンピュータからSSH接続を作成させます.SSHを通してTCP/IP接続を確保する手段を提供するので、ポートフォワーディングは時々「トンネリング」として参照されます.

ローカルポート転送


リモートホスト上で実行しているIMAPサーバを持っていると仮定し、ホームマシン上のメールクライアントを使用してサーバーにアクセスしたい場合.リモートホストの管理者がスーパーパラノイアであると仮定して、ポート80、433、22だけを除いて、すべての外部アクセスをブロックします.残念なことにIMAPはポート143であなたの家からアクセスできません.あなたがする必要があるのは、SSHを使用してIMAPサーバにトンネルを通して行うことです.ローカルマシンで実行するコマンドは以下の通りです.
$ ssh -L2001:localhost:143  remote.net
上記のコマンドを壊しましょう.- Lスイッチはローカルフォワーディングを指定します.これは基本的に、TCPクライアント(あなたの電子メールクライアント)があなたのローカルマシンにあると言います.2001年は、あなたのメールクライアントが接続したいローカルマシンのポートを表します.localhostは、サーバ上の接続のソースソケットがlocalhostから来るように見えます.つまり、上記のコマンドを以下のように書くことができます.
$ ssh -L2001:remote.net:143 remote.net
そして、ソースパケットはリモートから来ているように見えます.ネットアドレス.これはいくつかのTCPアプリケーションでは些細なことかもしれませんが、いくつかのサーバはループバックアドレスからのアクセス制御やブロック接続を行うように設定されています.または、マルチホームホスト上で動作している可能性があり、ホストが持っているアドレスのサブセットのみをバインドしています.最初のコマンドを使うほうが一般的です.最後に143はIMAPサーバがリモートサーバ上で動作しているポート番号を表します.
デフォルトでは、sshクライアントはローカルマシンからの接続のみを聞きます.これは、マシン上でローカルに実行しているアプリケーションからの接続を受け入れるだけです.外部アプリケーションからの接続をSSHクライアントに接続しようとすると、デフォルトで失敗します.これを有効にするには、上記のコマンドを微調整する必要があります.
$ ssh  -g -L2001:localhost:143  remote.net
- Gスイッチはクライアント設定ファイルのゲートウェイポートオプションを表します.yesに設定すると、- gオプションは必要ありません.

リモートポート転送


リモート転送の例は、リモートサーバーシェル上で実行されているメールクライアントがあると仮定します.プロバイダ.NETと我々は別のリモートサーバーリモートでIMAPサーバーにアクセスしたい.ホスト.SSHサーバがインストールされているネットでは、この場合はリモートフォワーディングが行われます.リモートフォワーディングを確立するコマンドは以下の通りです.
$ ssh -R2001:localhost:143  remote.host.net
この構文はローカルポート転送に似ています.ローカルポートフォワーディングの- Lスイッチの代わりに- Rスイッチであるだけです.
リモートおよびローカルフォワーディングの間に微妙な違いがあります.主な違いは、ローカル転送では、SSHクライアントは、アプリケーションクライアントからの通信をリッスンし、したがって、通常、アプリケーションクライアントと同じボックスに存在します.リモート転送では、SSHサーバーがアプリケーションクライアントからの通信をリッスンし、SSHサーバーとアプリケーションクライアントが同じホストに存在します.

ダイナミックポート転送


あなたは、ローカルの推進を使用している不安定なウェブサイトにアクセスするために、ポート80の上でHTTP接続をトンネルにするのが可能ですか?答えはyesですが、それに付属する多くの制限があります.例えばブラウザはlocalhostだけで実行しているので、http://inseure/web/now.html”はダイナミックな転送プロトコルです.そして、それはCIAで検閲されるウェブサイトへのプロキシ要求とトンネルまでの水の国とユーザーのプライバシーを保護します.SOCKSクライアントはTCPを通して接続して、それが到達したいリモートソケットをプロトコルを通して示します;SOCKSサーバは接続を行い、その後、データを透過的に透過的に通過する.sshでこれを有効にするコマンドは以下のように実行されます:
$ ssh -D 1080 remote.host.net
ユーザーがURLのような任意のポートを含むブラウザに絶対URLを入力するとSSHクライアントとサーバは、SSHサーバに接続して、SSHサーバに接続します、そして、SSHクライアントとサーバーは本質的に邪魔になります、そして、ブラウザーは直接ウェブサーバに接続しますSSHによるET.

靴下 結論


ポートフォワーディングは、SSHセッションを通してTCP接続をトンネルする一般的なTCPプロキシ機能です.ファイアウォールによってブロックされるかもしれないTCP接続に安全でトンネリングしないかもしれないプロトコルを確保することは役に立ちます.しかしながら、FTPのようなポート転送で適切に動作しないかもしれないTCPプロトコルがあります.FTPが認証の後、クライアントの上でランダムなポートを開くように、それは起こります.これはポートフォワーディングを不必要に複雑にします.TCPプロトコルの大部分はポートフォワーディングで動作します.