web-dev-qa-db-ja.com

ECDSAを使用したAmazonAWS EC2サーバーのSSHフィンガープリント検証?

新しいAmazonEC2サーバーを作成するときは、通常どおりsshを使用してサーバーに接続します。

典型的な警告が表示されます。

$ ssh myserver  
The authenticity of Host 'ec2-12-34-567-890.compute-1.amazonaws.com (12.34.567.890)'     can't be established.
ECDSA key fingerprint is 31:66:15:d2:19:41:2b:09:8a:8f:9f:bd:de:c6:ff:07.
Are you sure you want to continue connecting (yes/no)? 

サインインする前に指紋を確認するにはどうすればよいですか?

理想的には、答えは元の作成コンソールログ以外のものに基づいています-システムの再起動後、または大量の出力を生成する大規模なシステムインストールスクリプト中にログがフラッシュされる可能性があるため、または接続が古いシステムへの接続であるため作成時に追跡されなかったキー。

33

@joelparkerhendersonの回答がカバーしているように、ホストキーが(cloud-initスクリプトによって)生成されるときに、サーバーの初期開始ログからホストキーのフィンガープリントを収集できます。

enter image description here


この方法でキーを収集できない場合は、プライベートAmazonネットワーク内の別の信頼できるインスタンスからターゲットインスタンスに接続することでキーを取得できるため、man-in-the-middle攻撃から身を守ることができます。

信頼できるインスタンス(フィンガープリントを知っているインスタンス)端末では、次のコマンドを使用してフィンガープリントを収集できます(172.33.31.199はプライベートIPです)。

$ ssh-keyscan 172.33.31.199 > ec2key
$ ssh-keygen -l -f ec2key
256 SHA256:oZHeiMEPLKetRgd3M5Itgwaqr2zJJH93EvSdx5UoHbQ <ip> (ED25519)
2048 SHA256:8zg105EUFFrPFpVzdfTGsgXnxuSpTiQd85k0uNapUio <ip> (RSA)
256 SHA256:L7UXLw0djE5B9W7ZhvrkYVSTZyi1MEQ2dBaRtpkkUGY <ip> (ECDSA)

フィンガープリントがわかっている別のインスタンスがない場合は、キーを収集するためだけに、新しい一時インスタンスを作成します。最初に、最初の開始ログを使用して、新しい一時インスタンスのキーを見つけます。パブリックネットワークから一時インスタンスに接続します。次に、プライベートAmazonネットワークを介して、一時インスタンスからターゲットインスタンスに接続することにより、ターゲットインスタンスのキーを収集します。その後、一時インスタンスを破棄できます。


準備しました WinSCPを使用してEC2インスタンスに安全に接続するためのガイド

29
Martin Prikryl

EC2システムの作成中に私のために働いた2つのソリューションがあります。

解決策1:AmazonEC2ダッシュボードを使用する

  • https://console.aws.Amazon.com に移動します
  • 「EC2」リンクをタップします。
  • 左側の列の[インスタンス]をタップします
  • 必要なインスタンス名をタップします
  • 選択ボタン「アクション」をタップし、「システムログの取得」(別名「コンソール出力」)を選択します。
  • コンソール出力で、生成されているキーが表示されます。

解決策2:AWSEC2コマンドラインを使用する

awsコマンドまたはec2-get-console-outputコマンドを使用できます。どちらもAmazonからダウンロードできます。

EC2秘密鍵pemファイル、証明書pemファイル、リージョン、インスタンスを使用するには:

ec2-get-console-output \
  --private-key pk-ABCDEF1234567890.pem \
  --cert cert-ABCDEF1234567890.pem \
  --region us-east-1c \
  i-e706689a   

出力には、次のようなsshホストキーのフィンガープリントが表示されます。

ec2: -----BEGIN SSH Host KEY FINGERPRINTS-----
ec2: 1024 e0:79:1e:ba:2e:3c:71:87:2c:f5:62:2b:0d:1b:6d:7b  root@ip-10-243-118-182 (DSA)
ec2: 256 31:66:15:d2:19:41:2b:09:8a:8f:9f:bd:de:c6:ff:07  root@ip-10-243-118-182 (ECDSA)
ec2: 2048 ce:ec:3b:d3:34:3f:f3:45:76:81:9e:76:7a:d9:f5:e8  root@ip-10-243-118-182 (RSA)
ec2: -----END SSH Host KEY FINGERPRINTS-----

awsツールも同様に機能します。

注:これらのソリューションは、作成時、またはコンソールログを取得できる場合にのみ機能します。いつでも機能するより広範なソリューションについては、Martinの回答を参照してください。

18