检索EC2实例RSA指纹

时间:2014-12-18 10:16:22

标签: amazon-web-services ssh amazon-ec2 winscp

我正在尝试自动化启动EC2实例的完整过程,然后对其执行一些执行然后关闭它。除了一个问题,一切都很好。

我无法通过SSH进入我的EC2实例。要SSH到刚刚创建的EC2,我需要该特定实例的RSA指纹,该指纹不可用。现在我可以使用aws cli提取日志,但从那里提取日志非常复杂,因为提取的文件不包含新行字符。是否有任何直接命令可以通过它来了解EC2实例的指纹是什么,而无需登录?

我使用winscp通过以下命令

登录系统
"open sftp://ec2-user@%varPublicIp% -timeout=120 -privatekey="D:\subham_ec2key\privateKey-us-west-1.ppk" -hostkey="<RSA FINGERPRINT>"" 

1 个答案:

答案 0 :(得分:0)

以下代码段将解决问题。代码段用于批处理脚本。

aws ec2 get-console-output --output table --instance-id "i-256789"> InstanceId.txt
findstr "(RSA)" varInstanceId.txt>RSAFingerprint.txt
for /f "tokens=3 delims= " %%G in (RSAFingerprint.txt) do @echo %%G>RSAFingerprint.txt
for /f "delims=" %%G in (RSAFingerprint.txt) do set varRSAFingerprint=%%G
echo varRSAFingerprint: %varRSAFingerprint%

现在让我们逐行了解上述代码

aws ec2 get-console-output --output table --instance-id "i-256789"> InstanceId.txt

ec2控制台输出将提供EC2实例的系统日志。以table格式输出是非常必要的,否则json输出不会在文件中提供任何CRLF,从而无法提取RSA指纹。

findstr "(RSA)" varInstanceId.txt>RSAFingerprint.txt

从生成的syslog文件中查找(RSA)关键字,当它在该文件中找到(RSA)关键字时,它将返回包含该关键字的完整行,并将其放入RSAFingerprint.txt

for /f "tokens=3 delims= " %%G in (RSAFingerprint.txt) do @echo %%G>RSAFingerprint.txt

以上行仅从先前提取的行中提取指纹。

for /f "delims=" %%G in (RSAFingerprint.txt) do set varRSAFingerprint=%%G

以上行会将指纹放在变量varRSAFingerprint中。