SSH SSHトンネルまたはポート転送は、クライアントとサーバー・マシン間で暗号化されたSSH接続を作成する方法であり、サービスは、接続ポートを経由して中継することができます。
SSH(例えばVNCやFTPなどの)非暗号化プロトコルを使用して伝送のために転送、地理的アクセス制限コンテンツまたはファイアウォールサービスセンター・ネットワーク・データをバイパスするには非常に有用です。基本的に、あなたは、任意のTCPポートを転送し、セキュアな伝送トンネルトラフィックのSSHを介して接続することができます。
SSHポートフォワーディング3つのタイプがあります。
- ローカルポートフォワーディング。 - SSHサーバのホストへのクライアントホストからの接続を転送して、接続先のホストポートに転送。
- リモートポートフォワーディング。 - ポートクライアントホストにサーバホストから転送して、接続先のホストポートに転送。
- ダイナミックポートフォワーディング。 - ポートの範囲にわたって通信を可能にする、SOCKSプロキシサーバを作成します。
この記事では、我々は、ローカル、リモートおよびダイナミック暗号化されたSSHトンネルを設定する方法について説明します。
ローカルポートフォワーディング
ローカルポートフォワーディングは、リモートコンピュータ(SSHサーバー)上のポートにローカル(sshクライアント)コンピュータ上のポートを転送することができ、その後、ターゲットコンピュータ上のポートに転送します。
転送のこのタイプでは、SSHクライアントは、指定されたポートをリッスンし、リモートSSHサーバ上の指定されたポートへのトンネルに接続された任意のポートへの接続、およびターゲットコンピュータ上のポートに接続されたポート。ターゲットコンピュータがリモートのSSHサーバまたは任意の他のコンピュータとすることができます。
ローカルポート転送サービスは、主に(例えばデータベースまたはVNCサーバのような)内部ネットワーク上のリモート接続するために使用されます。
Linuxでは、MacOSの、および他のUnixシステムで-Lクライアントをsshをするためにオプションを渡すために、ローカルポート転送を作成します。
SSH -L [local_ipを:] LOCAL_PORT:DESTINATION:DESTINATION_PORT [ユーザー@] SSH_SERVER
オプションを使用し、以下のとおりです。
- [local_ipを:] LOCAL_PORT - ローカルマシンのIPアドレスとポート番号。SSHクライアントlocal_ipを省略すると、ローカルホストが接続されています。
- DESTINATION:DESTINATION_PORT - IPまたはターゲットコンピュータとポートのホスト名。
- [USER @] SERVER_IP - リモートSSHクライアントとサーバーのIPアドレス。
LOCAL_PORTは、1024より大きい任意のポート番号を使用することができます。1024ポート未満の特権ポート番号は、rootユーザーのみが使用することができます。22以外のポート(デフォルト値)、あなたのSSHサーバが受信しているかどうか、-p [PORT_NUMBER]オプションを使用してください。
ターゲットホスト名は、SSHサーバーから解決可能である必要があります。
あなたはポート3306上のコンピュータからアクセスすることができ、内部(プライベート)ネットワークのMySQLデータベースサーバー上のコンピュータdb001.host上で実行すると、データベース・サーバーに接続pub001.hostローカルコンピュータ上でmysqlクライアントを使用したいとしましょう。次のようにこれを行うには、接続を転送することができます。
ssh -L 3336:db001.host:3306 [email protected]
このコマンドを実行した後は、リモートのSSHユーザーのパスワードを入力するように求められます。一度入力された、リモートサーバーにログインして、SSHトンネルを設定します。パスワードを入力せずに、キーベースのSSHの身元を確認するために、サーバーへの接続を確立することは、より良い選択です。
さて、ローカルコンピュータのデータベースクライアント127.0.0.1:3336にあれば、接続は、MySQLサーバへの中間サーバコンピュータとして機能しますpub001.hostによってdb001.host:3306転送されます。
あなたは、単一のsshコマンドで複数の宛先に複数のポートを転送することができます。たとえば、あなたは、別のコンピュータ上のMySQLデータベースサーバを実行db002.host、あなたは2台のサーバーに実行されるローカルクライアントから接続したいです:
ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]
あなたが使用する127.0.0.1:3337第二のサーバに接続します。
SSHサーバのホストとターゲットの代わりに使用することができ、ターゲットホストのIPアドレスまたはホスト名はlocalhostを指定するのと同じです。
あなたはVNCは、リモートコンピュータに同じサーバ上で実行されている経由で接続するために、そしてあなたが外からアクセスすることはできません必要があるとします。あなたが使用するコマンドは、次のとおりです。
ssh -L 5901:127.0.0.1:5901 -N -f [email protected]
-fオプションは、バックグラウンドでsshコマンドの実行ではなく、-Nリモートコマンドの実行を指示します。私たちは、VNCとSSHサーバが同じホスト上で実行されているとしてlocalhostを、使用しています。
トンネルを設定するときに問題が発生した場合、リモートのSSHサーバの設定を確認してのAllowTcpForwardingがnoに設定されていないことを確認してください。デフォルトでは、転送を許可します。
リモートポートフォワーディング
ローカルおよびリモートポート転送ポート転送反対。それはあなたがローカルコンピュータ(sshクライアント)上のポートへのリモート(SSHサーバ)コンピュータ上のポートを転送することができ、その後、ターゲットコンピュータ上のポートに転送します。
転送のこのタイプでは、SSHサーバは、指定されたポートをリッスンし、ローカルのSSHクライアントに指定されたポートへのトンネルに接続された任意のポートへの接続は、ポートは、ターゲットコンピュータ上のポートに接続されています。ターゲットコンピュータは、ローカルコンピュータや他のコンピュータとすることができます。
Linuxでは、MacOSの、および他のUnixシステムでのsshクライアントに-Rオプションを渡すために、リモートポート転送を作成します。
SSH -R [ REMOTE:] REMOTE_PORT:DESTINATION:DESTINATION_PORT [ユーザー@ ] SSH_SERVER
オプションを使用し、以下のとおりです。
- [REMOTE:] REMOTE_PORT - IPとリモートSSHサーバーのポート番号。空のREMOTEは、リモートのSSHサーバは、すべてのインターフェイスにバインドすることを示しています。
- DESTINATION:DESTINATION_PORT - IPまたはターゲットコンピュータとポートのホスト名。
- [USER @] SERVER_IP - リモートSSHクライアントとサーバーのIPアドレス。
主に誰かに外部から内部サービスへのアクセスを提供するために使用するローカルポートフォワーディング。
あなたは、ローカルコンピュータ上のWebアプリケーションを開発していると仮定して、あなたは他の開発者へのプレビューを表示します。あなたは、パブリックIPを持っていないので、他の開発者は、インターネットを介してアプリケーションにアクセスすることはできません。
リモートSSHサーバーへのアクセス権を持っている場合は、次のようにリモートポート転送を設定することができます。
ssh -L 8080:127.0.0.1:3000 -N -f [email protected]
上記コマンドは、ローカルコンピュータのポートにポート8080と3000の伝送トンネルポートからのすべてのトラフィックをリッスンし、SSHサーバーを可能にします。
8080彼/彼女のブラウザをお使いのアプリケーションをプレビュー:今、あなたの開発者がthe_ssh_server_ip入力することができます。
あなたはGatewayPortsのを確実に、リモートポート転送を設定する問題がある場合、リモートSSHサーバの設定にyesに設定されています。
ダイナミックポートフォワーディング
ダイナミックポートフォワーディングを使用すると、SOCKSプロキシサーバーのローカル(sshクライアント)コンピュータとして働く上でソケットを作成することができます。クライアントがこのポートに接続すると、接続は、リモート(SSHサーバ)コンピュータに転送し、その後、ターゲットコンピュータ上のダイナミックポートに転送されます。
SSHサーバに接続するために、SOCKSプロキシを使用このように、すべてのアプリケーション、サーバ転送の実際の宛先へのすべてのトラフィック。
Linuxでは、MacOSの、および他のUnixシステムでは、ダイナミックポートフォワーディング(SOCKS)を作成すると、SSHクライアントに-Dオプションをお届けします。
SSH -R [ local_ipを:] LOCAL_PORT [ユーザー@ ] SSH_SERVER
オプションを使用し、以下のとおりです。
- [local_ipを:] LOCAL_PORT - ローカルマシンのIPアドレスとポート番号。SSHクライアントlocal_ipをが組み込まれた場合、ローカルホストを省略。
- [USER @] SERVER_IP - リモートSSHクライアントとサーバーのIPアドレス。
動的ポートフォワーディングの典型的な例は、SSHトンネルサーバを介してWebブラウザトラフィックを送信することです。
以下のコマンドは、ポート9090上でSOCKSのトンネルを作成します。
SSH -D 9090 -N -f [email protected]
トンネルの確立後、あなたはそれを使用するようにアプリケーションを構成することができます。この記事はFirefoxとGoogle Chromeブラウザは、SOCKSプロキシを使用するように設定する方法について説明します。
各アプリケーションは、あなたがポートフォワーディング個々を設定するためにトンネリングされなければなりません。
WindowsでSSHトンネルを設定します
WindowsユーザはSSHトンネルのPuTTY SSHクライアントを作成することができます。ここでは、パテをダウンロードすることができます。
-
SSHサーバとIPアドレスのホスト名(またはIPアドレス)フィールドのパテ開始。
-
接続メニューでは、SSHを拡張し、トンネルを選択します。ローカル、リモートのダイナミックリモートおよびダイナミックなポート転送を設定するには、地元のラジオボタンをチェックしてください。
- 5901:ソースポート宛先フィールド内のローカルフォワーディングは、例えば、ローカルホストのために、ローカルポート転送を入力し、[ターゲットホストとIPを入力した場合。
- 3000:リモートポート転送のために、たとえば、ローカルホストのために、送信元ポート宛先フィールドリモートSSHサーバーのポート転送を入力し、[ターゲットホストとIPを入力してください。
- あなたは、動的転送を設定した場合、ローカルのみSOCKSポートソースポートフィールドを入力してください。
-
以下に示すように、[追加]ボタンをクリックします。
-
あなたがそれらを毎回入力する必要がないようにして設定を保存し、セッションのページを返します。保存されたセッション名]フィールドに入力セッションと保存]ボタンをクリックしてください。
-
保存されたセッションを選択し、リモートサーバーにログインし、[開く]ボタンをクリックしてください。
新しいウィンドウがユーザー名とパスワードの入力を求めて表示されます。ユーザー名とパスワードを入力した後、サーバーにログインし、SSHトンネルを開始します。
設定公開鍵認証は、パスワードを入力せずにサーバに接続できるようになります。
概要
私たちは、トラフィックを転送するためにSSHトンネルをセットアップする方法をあなたに示し、安全なSSHを介して接続されてきました。使いやすくするため、次のことができ、設定ファイルSSH定義SSHトンネルSSHトンネルをまたは一連の作成バッシュエイリアスを。
問題が発生したか、フィードバックを持っている場合は、下記のメッセージを残してください。