海外サーバーvultr

OpenSSHを使用したポート転送とプロキシ

前書き

SSHはSecure Shellとも呼ばれ、リモートシェルを取得する以外にも多くの用途に使用できます。この記事では、SSHを使ってポート転送とプロキシ処理を行う方法を説明します。

唯一の前提条件は、OpenSSHサーバー(デフォルトでVultr Linuxイメージにインストールされている)とOpenSSHクライアント(Linux、BSD、およびMS Windowsで利用可能)です。

目的

SSHプロキシは、主にWebトラフィックのプロキシとして使用されます。たとえば、危険なローカルネットワークに対してWebトラフィックを保護するために使用できます。

SSHポート転送は、一般にアクセスできないサービスへのアクセスによく使用されます。たとえば、Webminなど、システム管理Webインタフェースをサーバー上で実行しているが、セキュリティ上の理由からlocalhostでの接続のみを待機しているとします。その場合は、SSHを使用して、選択したポートの接続をローカルマシンからサービスがサーバー側で待機しているポートに転送することで、SSHトンネルを介してこの特定のサービスにリモートアクセスすることができます。SSHポート転送が使用されるもう1つの一般的なシナリオは、そのプライベートネットワーク上のホストへのSSHトンネルを介してリモートプライベートネットワーク上のサービスにアクセスすることです。

使用法

プロキシとポート転送はどちらも、サーバー上で特別な構成を必要としません。ただし、SSHでは常にキーベース認証の使用をお勧めします。SSH鍵の生成方法を読んでください。

SSHプロキシ

SSHプロキシの作成は非常に簡単です。一般的な構文は次のとおりです。

ssh -D [bind-address]:[port] [username]@[server]

ここで[bind-address]、リッスンするローカルアドレスで[port]リッスンするローカルポートで、[username]サーバー上のユーザー名で、[server]サーバーのIPアドレスまたはホスト名です。[bind-address]指定されていない場合、SSHはデフォルトでデフォルトになりますlocalhost

これは実用的な例です:

ssh -D 8080 root@your_server

このプロキシを使用するには、ブラウザをSOCKSv5プロキシタイプおよび8080プロキシポートとして使用するように設定する必要があります。

SSHポート転送

コマンドの一般的な構文は次のとおりです。

ssh -L [localport]:[remotehost]:[remoteport] [username]@[server]

[localport]SSHクライアントが待機するポートはどこにありますか?[remotehost]接続の転送先となるホストのIPアドレスです。これは127.0.0.1あなたがあなたのサーバへの接続をトンネリングしている場合でしょう。最後に、[remoteport]接続しているサービスが使用しているサーバー上のポート番号です。

例1

重要なWebサービスを10000サーバーのport で実行することを検討してください。ただし、それは一般にはアクセスできません。次のコマンドは、そのサービスへのSSHトンネルを確立するために使用されます。

ssh -L 80:127.0.0.1:10000 root@your_server

これhttp://127.0.0.1で、ローカルブラウザに入力して接続できるようになります。

例2

プライベートネットワーク上に2つのVultrサーバーがあります。1つはLinuxディストリビューションを実行しており、もう1つはMS Windowsを実行しています。Windowsインスタンスでは、RDPサーバーは稼働していますが、セキュリティ上の理由からインターネットに公開されていません。192.168.1.5がWindowsマシンのプライベートIPアドレスであると仮定すると、次のコマンドを使用して、コンピュータのポートを介してリモートデスクトップサーバーに接続できます。

ssh -L 3389:192.168.1.5:3389 root@your_server

あなたのコンピュータからそれ自身へのどんなRDP接続もあなたのLinuxサーバを通ってあなたのWindowsサーバへトンネリングされるでしょう。