AmazonAWSにVPCがあります。インターネットゲートウェイに接続するパブリックサブネットで実行されているNATサーバーがあります。VPC内のさまざまなプライベートサブネットで実行されているサーバーがたくさんあります。次のサーバーにSSHで接続したいと思います。はプライベートサブネットにあります。すべてのサーバーはAWSLinux(CentOS)を実行しています。
現在、秘密鍵を使用してNATサーバーにSSHで接続できます。NATサーバーは、現在の開発IPからのSSH接続のみを許可します。次にSSHで接続できます。プライベートサブネット内のサーバーは、それらのサーバーでSSHログインを設定した場合、またはNATサーバーにキーファイルを配置してからSSHに使用した場合のみ)。セキュリティのために、私はこれらのことのどちらも行うべきではありません。
この接続を確立するための好ましいベストプラクティスの方法はありますか? Apple OSXを実行している自宅の開発マシンからの単一のSSH呼び出しに接続する方法があるはずです。
ゲートウェイに秘密鍵を置くべきではありません、そしてあなたはそうする必要はありません:-)
必要なときにポート転送にNATゲートウェイを使用できるように、ローカルSSH構成をセットアップします。
接続するホストへのローカル転送を設定するエントリを~/.ssh/config
に作成します。
Host natgw-fwd
User ec2-user
HostKeyAlias natgw-fwd.my.domain
HostName 54.182.32.11
LocalForward 1025 10.0.2.1:22
次に、HostKeyAlias
で転送されたホストごとに1つのエントリを追加します。
Host internal-one
User ec2-user
HostKeyAlias internal-one.ec2.internal
HostName localhost
Port 1025
トンネルを1つのシェルにまとめます。
ssh -C -v natgw-fwd
別のシェルの内部ホストに接続します。
ssh internal-one
Dshのようなツールのように、シェルまたは2つに加えて、多くの「クイック+ショート」接続を使用する場合、単一接続のセットアップとティアダウンの遅延がより顕著になり、ControlMaster
とControlPath
接続共有を有効にします。このようなシナリオではエージェントやX11を使用することはめったにないので、制限は気になりません。
私はいくつかの調査を行い、あなたが求めていることに関連しているように見える記事を見つけました。
SSHおよび要塞サーバー
デフォルトでは、EC2のLinuxインスタンスは、SSHユーザー名とパスワードの代わりにSSHキーファイルを認証に使用します。キーファイルを使用すると、誰かがパスワードを推測してインスタンスにアクセスしようとする可能性を減らすことができます。ただし、要塞ホストでキーペアを使用すると、問題が発生する可能性があります。プライベートサブネット内のインスタンスに接続するには秘密キーが必要ですが、要塞に秘密キーを保存しないでください。
1つの解決策は、クライアントでSSHエージェント転送(ssh-agent)を使用することです。これにより、管理者は、要塞に秘密鍵を保存せずに、要塞から別のインスタンスに接続できます。これが、この投稿で説明するアプローチです。
記事が推奨するように、要塞サーバーを作成し、クライアントでSSHエージェント転送を使用することで解決策が見つかることを願っています。
@Don Kingの答えは非常に役に立ちました、そしてここに彼が提案した チュートリアル があります。 OSXとWindowsの説明があります。
これは、ローカルOSXマシンからログインしたときに行ったことの概要です。これは、基本インフラストラクチャがVPCですでに正しいことを前提としています。詳細については、これを参照してください チュートリアル 。
プライベートサブネット内のサーバーのセキュリティグループへの接続を許可するNATセキュリティグループでアウトバウンドSSH接続を開きます。
NATセキュリティグループからの接続を許可する、プライベートサブネット内のサーバーのセキュリティグループでインバウンドSSH接続を開きます。
OSXでは、public_key.pemをローカルキーチェーンに追加します。ssh-add -K .aws/public_key.pem
ローカルマシンからNAT -A(ssh-agent)を使用)へのSSH:ssh -A ec2-user@ip_of_nat
NATからパブリックサブネット内のサーバーへのSSH:ssh ec2-user@ip_of_private_server
潜在的な問題: