Linux
 Computer >> コンピューター >  >> システム >> Linux

リバースSSHトンネルを使用してPCへの外部接続を許可する方法

リバースSSHトンネルを使用してPCへの外部接続を許可する方法

運が良ければ、インターネットサービスプロバイダー(ISP)から専用のIPアドレスが提供されます。ルーターにいくつかのポート転送ルールを追加することで、ホームサーバーをセットアップし、インターネットで利用できるようにすることができます。ただし、ISPがそのIPをネイバーと共有するように設定している場合、ポート転送は役に立ちません。他のプロバイダーは、ファイアウォールルールを介して着信接続をブロックするだけです。

仮想プライベートサーバーを使用すると、これらの制限をすべて回避できます。 RAMが512MB未満の場合でも、ネットワークトラフィックをリダイレクトするだけなので、何でも機能します。これはCPUとRAMで非常に軽いです。サーバーは着信接続を受信し、いわゆる「リバースSSHトンネル」を介してそれらをコンピュータにリダイレクトします。このようにして、非常に少ない月額費用で、あらゆる種類のホームサーバーをセットアップできます。

ファイルをアップロード/同期するためのNextCloudサーバーを作成するとします。これらのファイルをホームサーバーに置くことでプライバシーを確​​保し、6TBのハードドライブを購入して必要なすべてのスペースを確保できます。毎月の電気代と仮想プライベートサーバーの月額5ドル未満を支払うだけです。これは、6TBの容量を持つサーバーの月額料金よりもはるかに安価です。

:これは、TCPネットワークトラフィックをリダイレクトする場合にのみ機能します。 TCPは、Webサーバー(ポート80 / tcp)などで使用されます。 UDPは、Counter Strike(ポート27015 / UDP)など、一部の(すべてではない)ゲームサーバーで使用されます。 UDPトンネリングは可能ですが、将来のチュートリアルのトピックになる可能性のある「ハック」がいくつかあります。

Windows10にSSHクライアントが組み込まれました

SSH接続を開始するためにPuTTYを使用する必要はもうありません。実際、このチュートリアルでは、実際にこの組み込みクライアントを使用してトンネルを設定します。まだ慣れていない場合は、Windows10のOpenSSHクライアントに関するチュートリアルをお読みください。

仮想プライベートサーバーをトンネル接続に準備する

DigitalOcean、Linode、Vultrなどのお気に入りのプロバイダーを使用して仮想プライベートサーバーを作成します。最も重要なことは、ネットワークの遅延を最小限に抑えるために、できるだけ自分に近いサーバーの場所を選択することです。より安全であるため、rootアカウントに直接ログインできるように、できればSSHキーを使用してサーバーを設定してください。これは、サーバーが1024未満のポート(いわゆる特権ポート)で着信する接続をリッスンするようにする場合に必要です。

コマンドプロンプト(またはLinuxを使用している場合はターミナル)を開き、SSH経由でサーバーにログインします。

OpenSSHサーバー設定の編集:

nano /etc/ssh/sshd_config

rootとしてではなく通常のユーザーとしてログインした場合は、次のコマンドを使用する必要があります。そうしないと、ファイルを保存できません。

sudo nano /etc/ssh/sshd_config

「GatewayPorts」という変数が見つかるまで下にスクロールします。行は次のようになります:#GatewayPorts no 。前の「#」を削除して(コメントを外すため)、行をGatewayPorts yesに変更します 。

リバースSSHトンネルを使用してPCへの外部接続を許可する方法

行が見つからない場合は、最後までスクロールして、自分で行を追加します。

GatewayPorts yes

Ctrlを押します + X 、次に yを押します 、最後にEnterキーを押してファイルを保存します。

SSHデーモンをリロードして、新しい設定を取得できるようにします。

systemctl reload ssh.service

SSHセッションを終了します。

exit

リバースSSHトンネルを設定する方法

コマンドパラメータは、Linux、Windows、さらにはBSDオペレーティングシステムでも同じです。一般的な構文は次のとおりです。

ssh -R remote_port:host:localport your_username@IP-of-server
  • remote_port そのポートでサーバーに到達する接続をリダイレクトするようにサーバーに指示します。
  • host 接続のリダイレクト先となるIPアドレスをサーバーに通知します。 127.0.0.1 ここでは、自分のコンピューターにリダイレクトするために使用されます。
  • localport どのポートデータパケットをリダイレクトするかを指示します。ここに、ローカルコンピュータにインストールされているアプリケーションがリッスンするポート番号を入力する必要があります。

たとえば、(サーバーに)ポート80で接続されたすべての接続を転送し、ローカルコンピューターのポート8080に送信するには、次のコマンドを実行します。

ssh -R 80:127.0.0.1:8080 root@203.0.113.1

これは、ローカルマシンのポート8080でリッスンするApacheやNginxなどのWebサーバーがあることを前提としています。ただし、Apache / Nginxがデフォルトのポート80でリッスンしている場合は、前のコマンドで同じポートを2回使用しても問題はありません(別のサーバーのポート80を参照しているため)。

ssh -R 80:127.0.0.1:80 root@203.0.113.1

この時点で、誰かがブラウザのアドレスバーに仮想プライベートサーバーのIPアドレスを入力すると、その接続はリダイレクトされ、ローカルコンピュータによって提供されます。

リバースSSHトンネルを使用してPCへの外部接続を許可する方法

上の図では、デフォルトでポート8887でリッスンするChrome用のシンプルなウェブサーバーが使用されています。写真のように、アプリをインストールしてからコマンドを使用することで、このセットアップを自分で試すことができます。

トンネルをアクティブに保つには、SSHセッションをアクティブのままにする必要があることに注意してください。トンネルを閉じるには、「exit」と入力します ターミナル/コマンドプロンプトウィンドウで。

結論

ご覧のとおり、リバースSSHトンネルを作成することは難しくありませんが、Webサイトを保護することは難しくありません。したがって、ローカルのNextCloudサーバーのようなアイデアを実装することを選択した場合は、少なくとも仮想マシンでそれを分離してください。このようにして、Webサイトが危険にさらされても、少なくともオペレーティングシステムの残りの部分は無傷になります。

そして、あなたは知っています…あなたが失う危険を冒したくないものを常にバックアップしてください!


  1. PC で Telegram を使用する方法

    Telegram は、プライベート メッセージングの世界で気密性の高いセキュリティを備えた数少ないアプリの 1 つとして有名になりました。電話番号ではなく、新しい人とつながるためのユーザー名に依存しているため、自分の人生をプライベートに保ちたい人に人気の選択肢になっています.すべてが安全なプライベート通信で終わるわけではありませんが、ユーザーが物事を目立たなくするのに役立ちます. ユーザーベースが着実に増加しているため、一部のユーザーがデスクトップからテレグラムにアクセスしたいと考えていることは驚くことではありません.ありがたいことに、すべての一般的なメッセージング プラットフォームと同様に

  2. SSH サーバーを使用して障害のある Windows PC にアクセスする方法

    システムが突然クラッシュし、コマンドに応答しなくなることがあります。コンピューター上の重要なものにアクセスしたいが、コンピューターが動作していないためにアクセスできない場合、状態はさらに悪化します。 SSH サーバーを使用して障害のある Windows PC にアクセスし、問題を解決できるようになりました。ほとんどの人は SSH とは何かを知らないかもしれません。そのため、先に進む前に、SSH について簡単に理解しておきましょう。 SSH サーバーとは SSH (別名 Secure Shell) は、セキュリティで保護されていないネットワーク上でネットワーク サービスを安全に操作するため