当我创建一个新的Amazon EC2服务器,我连接到它使用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)?
如何验证指纹之前,我登录?
理想的答案是基于除了独创控制台日志的东西 - 因为在系统重新启动后的日志可能会冲出,或产生大量的输出,或连接是使用旧系统的大系统安装脚本时那些没有在创建时跟踪键。
作为@ joelparkerhenderson的回答涵盖了,你可以从服务器的初始启动日志时(由生成主机密钥收集主机密钥指纹cloud-init
脚本):
如果你不能领取钥匙的这种方式,您可以通过连接到您的目标实例私人亚马逊网络内的其他可信的实例,从而保持自己的人在这方面的中间人攻击的安全得到他们。
当在受信任的实例(你知道指纹之一)终端,你可以使用下面的命令来采集指纹( 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)
如果没有其他情况下,它的你知道指纹,创建新的临时实例,只是为了收集钥匙的目的。 首先找到了新的临时实例键,使用它的初始启动日志。 从公共网络连接到临时实例。 然后通过连接到它从临时的实例,对私人亚马逊网络收集目标实例的钥匙。 在此之后,你可以删除临时实例。
我已经准备指南,用于连接到EC2实例安全使用WinSCP赋予 。
这里有两个解决方案,创建了EC2系统的过程中为我工作。
解决方法1:使用Amazon EC2的仪表盘
- 转到https://console.aws.amazon.com
- 点击“EC2”链接。
- 点击“实例”,在左栏
- 点击你想要的实例名
- 点击选择按钮“操作”,然后选择“获取系统日志”(又名“控制台输出”)
- 在控制台输出,你应该看到正在生成的密钥
方案2:使用AWS EC2命令行
您可以使用aws
命令或ec2-get-console-output
命令。 两者都可以从亚马逊下载。
要使用您的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
工具的工作原理类似。
注意:这些解决方案仅在创建期间工作,或者当你可以得到的控制台日志。 对于工作任何时候更广泛的解决方案,看马丁的答案。