NATサーバー経由でVPCプライベートサブネットのec2インスタンスにSSHで接続する方法


16

AWSでパブリックサブネットとプライベートサブネットを使用してVPCを作成しました。プライベートサブネットは、外部ネットワークに直接アクセスできません。そのため、パブリックサブネットには、プライベートサブネットから外部ネットワークにすべてのアウトバウンドトラフィックを転送するNATサーバーがあります。

現在、パブリックサブネットからプライベートサブネットにSSH接続できます。また、NATからプライベートサブネットにSSH接続できます。ただし、私が望むのは、任意のマシン(自宅のラップトップ、オフィスマシン、モバイル)からプライベートサブネットのインスタンスへのSSHです。

NATボックスを設定してプライベートサブネットのインスタンスにSSHを転送できることを調査しました。しかし、これには運がありませんでした。

これを可能にするためにセットアップする必要があるものを誰でもリストできますか?

命名は次のとおりです。

ラップトップ(VPC外のデバイス)

nat(パブリックサブネットのNATサーバー)

宛先(接続したいプライベートサブネット内のサーバー)

以下が制限かどうかわからない:

「宛先」にはパブリックIPはなく、サブネットIPのみ、たとえば10.0.0.1「宛先」は、natのパブリック経由で「nat」に接続できません。複数の「宛先」サーバーがありますが、それぞれに1つセットアップする必要がありますか?

ありがとう


このリンクでは、SSHエージェント転送を介してプライベートサブネットのEC2インスタンスに接続するために必要な手順の概要を説明します。
シャイレンダーラワット

回答:


25

要塞ホストをセットアップして、VPC内の任意のインスタンスに接続できます。

http://blogs.aws.amazon.com/security/post/Tx3N8GFK85UN1G6/Securely-connect-to-Linux-instances-running-in-a-private-Amazon-VPC

要塞ホストとして機能する新しいインスタンスを起動するか、既存のNATインスタンスを要塞として使用するかを選択できます。

概要として新しいインスタンスを作成する場合、次のことを行います。

1)ラップトップからのSSHアクセスを許可する要塞ホストのセキュリティグループを作成します(手順4のこのセキュリティグループに注意してください)

2)VPCのパブリックサブネットで個別のインスタンス(要塞)を起動する

3)起動時に、またはElastic IPを割り当てて、要塞ホストにパブリックIPを付与します

4)パブリックIPを持たない各インスタンスのセキュリティグループを更新して、要塞ホストからのSSHアクセスを許可します。これは要塞ホストのセキュリティグループID(sg-#####)を使用して実行できます。

5)SSHエージェント転送(ssh -A user @ publicIPofBastion)を使用して最初に要塞に接続し、次に要塞で一度、SSHを任意の内部インスタンスに接続します(ssh user @ private-IP-of-Internal-Instance)。エージェント転送は、秘密鍵の転送を処理するため、要塞インスタンスに保存する必要はありません(どのインスタンスにも秘密鍵を保存しないでください!!

上記のAWSブログ投稿では、プロセスに関するいくつかの核心を提供できるはずです。要塞ホストに関する追加の詳細が必要な場合に備えて、以下も含めました。

要塞ホストの概念:http : //en.m.wikipedia.org/wiki/Bastion_host

説明が必要な場合は、お気軽にコメントしてください。


3
要塞のインバウンドとアウトバウンドの両方でSSH / 22を許可してください。
user464180

これは非常に重要なポイントであり、答えの一部であるに違いありません。
タリク

完全にではありませんが大いに役立つ受け入れられた答えに加えて、セキュリティグループが受信および送信トラフィックを許可することを確認する必要がありました。一見、すでにそうであるように見えましたが、CloudFormationテンプレートを使用していたため、プライベートサブネットへの着信トラフィックのソースが自分のELBであることに気付きませんでした。そのため、すべてのトラフィックを許可しましたが、ELBからのみです。これをパブリックサブネットに変更すると、問題が修正されました。
ミラノマルコビッチ

1

私がそれを機能させることができる唯一の方法。

1)このプライベートインスタンスのセキュリティグループが、受信ルールにパブリックサブネットのセキュリティグループを持っていることを確認します

ポートプロトコルソース
すべてすべてsg-0b6616e070b9ea2d(パブリックセキュリティグループ)

2)プロキシコマンドを使用して、ssh構成ファイルを構成し、次のようにします。

vim ~/.ssh/config

Host publichost
   HostName 24.123.34.45
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand none
Host privatehost
   HostName 10.0.2.133
   User ubuntu
   IdentityFile ~/mypem.pem
   ProxyCommand ssh publichost -W %h:%p

実行しssh privatehost 、それが動作するはずです


0

明確にするために、要塞ホストにsshした後、userとしてNATホストにsshする必要がありますec2-user。通常、ubuntuユーザーはAWSでubuntuであるため、これは私を少し困らせました。だから私はやった:

laptop> ssh -A ubuntu@ssh_bastion
ssh_bastion> ssh ec2-user@nat_private_dns_or_private_ip

また、ssh_bastionには、他のホストおよびsgへのトラフィックを許可するアウトバウンドルールが必要であることを忘れないでください。


NATサービス用に構成済みのAmazon AMIを具体的にスピンアップした結果、その「ec2_user」名になりましたか?では、「ec2-user」はどのようにしてプライベートマシンのアカウントを取得しましたか?
デニス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.