Французский из шкафа №39 PRONOMS RELATIFS SIMPLES (ОТНОСИТЕЛЬНЫЕ МЕСТОИМЕНИЯ) ЧАСТЬ 1/3
目次:
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をダウンロードできます。
-
Puttyを起動し、
Host name (or IP address)
フィールドにSSHサーバーのIPアドレスを入力します。ユーザー名とパスワードを求める新しいウィンドウが表示されます。 ユーザー名とパスワードを入力すると、サーバーにログインし、SSHトンネルが開始されます。
公開鍵認証を設定すると、パスワードを入力せずにサーバーに接続できます。
結論
SSHトンネルをセットアップし、安全なSSH接続を介してトラフィックを転送する方法を示しました。 使いやすくするために、SSH構成ファイルでSSHトンネルを定義するか、SSHトンネルをセットアップするBashエイリアスを作成できます。
sshセキュリティ