SSH経由でサーバー(外部IPを持たない)に接続する

SSH経由でサーバー(外部IPを持たない)に接続する

Ubuntu サーバーとして小さな PC をセットアップし、ssh 経由で接続できるように ssh-server を構成しました。問題はここから発生します。ISP から外部 IP が提供されておらず (すべてのデバイスに 1 つの外部 IP があります)、それを変更できないためです。そこで、調査に基づいて、無料レベルの AWS インスタンスを作成し、そこに OpenVPN を作成しました。

だから私は次のように動作しています:

  1. PC1
  2. OpenVPN サーバーをホストする外部 IP を持つ AWS インスタンス
  3. PC2

PC1 と PC2 は AWS 上の OpenVPN サーバーに接続されており、PC2 を使用して SSH 経由で PC1 に接続できます。PC2 を
OpenVPN に接続せずに、PC2 を使用して SSH 経由で PC1 に接続するためのオプション (ある場合) は何ですか。または、SSH 接続用にのみ OpenVPN に接続し、残りのトラフィックでは OpenVPN を使用しないオプションがあるでしょうか。

答え1

OpenVPN については何も知りません。私の場合は、SSH トンネルを使用しています。基本は非常にシンプルですが、完全なセットアップはやや難しい場合があります。とはいえ、任意の数のコンピューターをトンネリングできます (すべてのトンネルを同時に使用しない限り、高速です)。

ssh -fNR 2222:localhost:22 aws-computer

これは、使用するキーとユーザー名/パスワードを定義するファイルaws-computer内の名前です。~/.ssh/config

これで、ssh で接続するときに以下aws-computerを使用できます:

ssh -p 2222 pc1

単一の通常の SSH 接続があるかのように接続します。

トンネリングは好きなだけ繰り返すことができます。つまり、最終的には、ssh pc2PC1 から 1 回、ssh pc1PC2 から 1 回実行できます。すべてが機能するようにするには、少し設定するだけです。

Host aws-computer
  HostName <ip-address-or-domain-name>
  User name
  Port 22
  PasswordAuthentication no
  HostbasedAuthentication no
  IdentitiesOnly yes
  IdentityFile /home/name/.ssh/tunnel_keys/tunnel_rsa

注: 追加のキー(通常のキー以外のキー)にはサブディレクトリを使用します。何個でも持てる

主な制限は、異なるポートを使用する必要があることです (つまり、1 台のコンピューターで 1 つのポートを使用して 2 つのサービスを使用することはできません)。もう 1 つの制限は、コンピューターの 1 つに静的 IP アドレスがあるか、IP を記録するドメイン ネーム サーバーを利用できるようにする必要があることです。このような DNS は、他の誰かが「あなたの」古い IP を入手し、システムがサードパーティのコンピューターを介して接続しようとする可能性があるため、あまり安全ではありません。

関連情報