アンドロイド

SSHトンネリングを設定する方法(ポート転送)

Французский из шкафа №39 PRONOMS RELATIFS SIMPLES (ОТНОСИТЕЛЬНЫЕ МЕСТОИМЕНИЯ) ЧАСТЬ 1/3

Французский из шкафа №39 PRONOMS RELATIFS SIMPLES (ОТНОСИТЕЛЬНЫЕ МЕСТОИМЕНИЯ) ЧАСТЬ 1/3

目次:

Anonim

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_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

使用されるオプションは次のとおりです。

  • LOCAL_PORT ローカルマシンのIPとポート番号。 LOCAL_IP を省略すると、sshクライアントはローカルホストにバインドします。 DESTINATION:DESTINATION_PORT 宛先マシンのIPまたはホスト名とポート。 SERVER_IP リモートSSHユーザーとサーバーのIPアドレス。

1024 より大きい任意のポート番号を LOCAL_PORT として使用できます。 1024 未満のポート番号は特権ポートであり、rootのみが使用できます。 SSHサーバーが22(デフォルト)以外のポートでリッスンしている場合は、 -p オプションを使用します。

宛先ホスト名は、SSHサーバーから解決可能でなければなりません。

マシン db001.host からアクセス可能なポート3306上の内部(プライベート)ネットワーク上のマシン db001.host で実行されているMySQLデータベースサーバーがあり、ローカルマシン mysql クライアントを使用してデータベースサーバーに接続するとします。 そのためには、次のように接続を転送できます。

ssh -L 3336:db001.host:3306 [email protected]

コマンドを実行すると、リモートSSHユーザーパスワードの入力を求められます。 入力後、リモートサーバーにログインし、SSHトンネルが確立されます。 SSHキーベースの認証を設定し、パスワードを入力せずにサーバーに接続することをお勧めします。

ここで、ローカルマシンデータベースクライアントを 127.0.0.1:3336 にポイントすると、接続は、中間サーバーとして機能する pub001.host マシンを介して pub001.host MySQLサーバーに転送されます。

1つのsshコマンドで複数のポートを複数の宛先に転送できます。 たとえば、マシン db002.host 実行されている別のMySQLデータベースサーバーがあり、実行するローカルクライアントから両方のサーバーに接続する場合:

ssh -L 3336:db001.host:3306 3337:db002.host:3306 [email protected]

2番目のサーバーに接続するには、 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サーバー)マシンのポートをローカル(sshクライアント)マシンのポートに転送し、それを宛先マシンのポートに転送できます。

このタイプの転送では、SSHサーバーは特定のポートでリッスンし、そのポートへの接続をローカルSSHクライアントの指定ポートにトンネリングし、ローカルSSHクライアントは宛先マシンのポートに接続します。 宛先マシンは、ローカルまたは他のマシンにすることができます。

Linux、macOS、および他のUnixシステムでリモートポート転送を作成するには、 -R オプションを ssh クライアントに渡します。

ssh -R REMOTE_PORT:DESTINATION:DESTINATION_PORT SSH_SERVER

使用されるオプションは次のとおりです。

  • REMOTE_PORT リモートSSHサーバーのIPとポート番号。 空の REMOTE は、リモートSSHサーバーがすべてのインターフェースにバインドすることを意味します。 DESTINATION:DESTINATION_PORT 宛先マシンのIPまたはホスト名とポート。 SERVER_IP リモートSSHユーザーとサーバーのIPアドレス。

ローカルポートフォワーディングは、主に外部から誰かに内部サービスへのアクセスを許可するために使用されます。

ローカルマシンでWebアプリケーションを開発していて、同僚の開発者にプレビューを表示するとします。 パブリックIPがないため、他の開発者はインターネット経由でアプリケーションにアクセスできません。

ssh -L 8080:127.0.0.1:3000 -N -f [email protected]

上記のコマンドにより、sshサーバーはポート 8080 リッスンし、このポートからポート 3000 ローカルマシンにすべてのトラフィックをトンネルします。

これで、仲間の開発者が自分のブラウザに the_ssh_server_ip:8080 して、すばらしいアプリケーションをプレビューできます。

動的ポート転送

動的ポート転送を使用すると、SOCKSプロキシサーバーとして機能するローカル(sshクライアント)マシン上にソケットを作成できます。 クライアントがこのポートに接続すると、接続はリモート(sshサーバー)マシンに転送され、それが宛先マシンの動的ポートに転送されます。

この方法で、SOCKSプロキシを使用するすべてのアプリケーションはSSHサーバーに接続し、サーバーはすべてのトラフィックを実際の宛先に転送します。

Linux、macOS、およびその他のUnixシステムで動的ポート転送(SOCKS)を作成するには、 -D オプションを ssh クライアントに渡します。

ssh -D LOCAL_PORT SSH_SERVER

使用されるオプションは次のとおりです。

  • LOCAL_PORT ローカルマシンのIPとポート番号。 LOCAL_IP を省略すると、sshクライアントはローカルホストにバインドします。 SERVER_IP リモートSSHユーザーとサーバーのIPアドレス。

動的ポート転送の典型的な例は、SSHサーバーを介してWebブラウザートラフィックをトンネリングすることです。

次のコマンドは、ポート 9090 SOCKSトンネルを作成します。

ssh -D 9090 -N -f [email protected]

トンネリングが確立されると、それを使用するようにアプリケーションを構成できます。 この記事では、SOCKSプロキシを使用するようにFirefoxおよびGoogle Chromeブラウザーを構成する方法について説明します。

ポートフォワーディングは、トラフィックをトンネリングするアプリケーションごとに個別に構成する必要があります。

WindowsでSSHトンネリングをセットアップする

Windowsユーザーは、PuTTY SSHクライアントを使用してSSHトンネルを作成できます。 こちらからPuTTYをダウンロードできます。

  1. Puttyを起動し、 Host name (or IP address) フィールドにSSHサーバーのIPアドレスを入力します。

    ユーザー名とパスワードを求める新しいウィンドウが表示されます。 ユーザー名とパスワードを入力すると、サーバーにログインし、SSHトンネルが開始されます。

    公開鍵認証を設定すると、パスワードを入力せずにサーバーに接続できます。

結論

SSHトンネルをセットアップし、安全なSSH接続を介してトラフィックを転送する方法を示しました。 使いやすくするために、SSH構成ファイルでSSHトンネルを定義するか、SSHトンネルをセットアップするBashエイリアスを作成できます。

sshセキュリティ