每当我在 EC2 中启动 VM 并且您第一次通过 ssh 进入它时,我总是收到以下消息:
The authenticity of host 'ec2-xxxxxx.compute-1.amazonaws.com (n.n.n.n)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Run Code Online (Sandbox Code Playgroud)
和其他人一样,我只是说是
Are you sure you want to continue connecting (yes/no)? yes
Run Code Online (Sandbox Code Playgroud)
我了解指纹是什么,为什么它很好等等。我想知道的是,几年前,因为它是我设置的物理机......我可以检查物理机并验证是的,这是指纹。
EC2 控制台中是否有某种方法可以独立验证“是的,这是指纹”?如果是这样,你如何找到它?
cyb*_*x86 11
对于带有 cloud-init 的实例,您可以使用 AWS 控制台验证指纹。
以下是运行 Amazon Linux 的实例。
有一个名为 cloud-init 的 init.d 脚本:
cloud-init 是与分发无关的包,用于处理云实例的早期初始化。
它配置的一些东西是:
- 设置默认语言环境
- 设置主机名
- 生成 ssh 私钥
- 将 ssh 密钥添加到用户的 .ssh/authorized_keys 以便他们可以登录
- 设置临时挂载点
- 准备包存储库并根据用户数据执行各种启动时自定义操作
启动实例后,您可以通过 AWS 控制台查看系统日志输出,而无需使用 SSH。(这避免了您的 catch-22 - 您可以在访问实例之前看到指纹)。
你可以这样做
转到您的EC2 管理控制台页面,
单击侧边栏上的“实例”链接,
选择您要登录的实例,然后
导航到操作 > 实例设置 > 获取系统日志。
如果您滚动浏览该输出,您将看到如下内容:
Running cloud-init
...
cloud-init: sshGenerating public/private rsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_rsa_key.
Your public key has been saved in /etc/ssh/ssh_host_rsa_key.pub.
The key fingerprint is:
aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa root@example.com
The key's randomart image is:
+--[ RSA 2048]----+
| aa |
| a a |
| aa a a |
| a aaa |
| aaaaa a |
| a a aa |
|aaaa a aa |
|aaaaaa a |
| aa a |
+-----------------+
Generating public/private dsa key pair.
Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
The key fingerprint is:
bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb root@example.com
The key's randomart image is:
+--[ DSA 1024]----+
| |
| |
| |
| b b |
| b b |
| b b b |
| bb b bb |
| b bbb bb b |
| bbbb bbb |
+-----------------+
ec2:
ec2: #############################################################
ec2: -----BEGIN SSH HOST KEY FINGERPRINTS-----
ec2: 2048 aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa root@example.com (RSA)
ec2: 1024 bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb:bb root@example.com (DSA)
ec2: -----END SSH HOST KEY FINGERPRINTS-----
ec2: #############################################################
[ OK ]
Run Code Online (Sandbox Code Playgroud)
每个“randomart”图像上方是签名类型,例如 RSA 或 DSA。找到您得到的种类(在您的情况下为 RSA),并检查其上方的指纹。
如果您想验证实例上的密钥是否相同(作为概念证明,在您使用 SSH 之后),您可以运行:
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
2048 aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa:aa root@example.com (RSA)
Run Code Online (Sandbox Code Playgroud)
替代方法:
为了避免这个问题,您可以使用自己的密钥——因为您生成了密钥,所以您知道指纹。然后问题就变成了在不使用 SSH 的情况下将新密钥放到实例上的问题之一。
大多数实例使用 cloud-init 并将支持用户数据。这适用于任何此类情况。由于您需要停止实例才能修改用户数据,因此这种方法要求您要么是 a: 首次启动实例(并且正在设置自己使用已知密钥),要么 b: 可以停止该实例,修改用户数据,重启实例。
如果您要启动一个新实例,您只需要指定您要使用的密钥,如果您要重新启动一个已经在运行的实例,您需要让 cloud-init 重新配置 SSH 以拉入新密钥。默认情况下,cloud-init 的 SSH 配置模块每个实例运行一次,因此您需要将其设置为始终运行(每次启动)(这在某些情况下可能并不理想,但可以在知道密钥后进行修改,如果需要的话)
用户数据将采用以下形式:
#云配置 cloud_config_modules: #仅在重启实例时需要,启动新实例时省略 ...列出所有现有模块 - [ssh, always] #this 改为 always(默认为每个实例一次) ssh_keys: rsa_private: | -----开始RSA私钥----- -----结束RSA私钥----- ssh-rsa #public_key例如:
#云配置 cloud_config_modules: - 语言环境 - [ssh,总是] - 设置密码 - 坐骑 - 百胜配置 - yum-add-repo - 包更新升级安装 - 时区 - 傀儡 - 禁用-ec2-metadata - 运行命令 ssh_keys: #您可以指定rsa、dsa和ecdsa密钥 rsa_private: | -----开始RSA私钥----- MIIEoQIBAAKCAQEAopbE8beKaKajF/SFOTntO9xt5XVZW5rlQCW6PVY1jXCq5dbj nEQoBGBIp6jsqLcnwYQW/tU4zXi7T0kX6NlVywiMOtjnyoOkLCX2R5OjMap3hlyj AO/PCKW7pE4vAHd7HyYvGW/gPezGW0WeFshp7J7dTXZdSmDquZI15rEsz07QsKWy /SH/rjYVObAQJN78CuU7C41LRshEeTSBM0jBSnp3jL1Ocw66qe4sV6jbcQN6QzK3 77e+KzpUDmcxaB7plTWDSpjxVFWbY6PQcsz5d/h60wSKu90Ia9fNMHWs7cbyELhK VPBRs4JtWKndjtISCd5T34UnKmtTpq6g/ocrrwIBJQKCAQB7Ck/Zg/oKAZAtzcyb PSI7I1oVbY+68cI+Yb1e2XSiYxmLVoK7cdkYEYMXGA0KDhA/auD4MqeGvDq4ildI br5UdSvZgYzQmvjHdqyJMXSUSaaPMVjCcEmlrdobeW+tU3/Ei5lDrpvb1caKQoV5 Bl3/LB0YBovJlXNb//FwTrogVhYFexcda+DxN5a2oNSCwMosdgCP4gz+hX9zTAl9 k/VOkLaj2h7URfsuAmwwZ+m24Bpz1r7vEtec0PraoKkBpVxBeNDPwMdosTrpGS49 V+YRRiM8yShuRPF9mAwo62kcD7K5bToppyb6CLdCi06CTcAmQ5Sb+UwHqC/rdZI0 wmnNAoGBAPxj6ecjM0AwrPf2TPJOtdEUHvFnc6bB23C32Yr7IWjNhij0BGG/D8Cv smCXDwYDH7Ss4CN/mMzG43QhfyyAz0T0BjpFmZEYqYOJAB7cwpdx4zjHzoc7WKiI vXPml2hdd37iVRNq6raUgDLpKfVkpY8FKcJjzFuiCXDOU1+mNxPbAoGBAKTqD/+X oDGsf6hkV7vgPLIXc3/BZco0l9kNkemto9RVisr3D40bfe4PuJg3fjwFYDTq9s79 WFR5sG/eSpNJtSGTz6LN5TQoL5xLMCIysajc+JN64w4TYCDGSEk4Xgv0X0cCgJfF RCedv9qObGT9/KCI/9Y/5jlZsVphNsAk4Xm9AoGBAKO2bjUP6eRymbWY1/ceTGvx YC3iPS3lh2u1hjCi5T0PsPf4OjGQsEWiZd3JxI5HNykWMIW6jKCBAj19guxvOlY9 a9LFXLEkwPtfyLoSp7wuMoWyCWx5hZ3AeuNlI/CrVG36mAyYYOUiDfeCfBTLqajg wSQlDu9UWSaTq7OqFeNdAoGAFkkkway0yHFBrvjNle3esEhbt1F8dUVgoMp7gHFp KogLnuMdxvXglcrF6w5rATE或TSCN6Wx/ZPnaRAzl1z8zS+mb/JPZ+nBPqJgc1L1 adir+EEJ7SU2gPgzSCo2OPeCfzewgzZVUXYurtT55CJSkjwG5Znurc3ZskR9BTVq k+kCgYARZXWS0Wyy5piq7WX7w2Hc6bVEPMCU+yJcbJ8E+F8meoQ1kXIRqIB+cAsq /3z3JmU19yOGms557POXgEFseMMFai3i2wTQ4mGPOM3a7yEeeKl1Zg5eHVUdVd+n PDzs9D+9umc6mXrRiRwJPQWo8pIKXb7SqjIA73M7H+98CBtb5w== -----结束RSA私钥----- SSH-RSA AAAAB3NzaC1yc2EAAAABJQAAAQEAopbE8beKaKajF / SFOtntO9xt5XVZW5rlQCW6PVY1jXCq5dbjnEQoBGBIp6jsqLcnwYQW / tU4zXi7T0kX6NlVywiMOtjnyoOkLCX2R5OjMap3hlyjAO / PCKW7pE4vAHd7HyYvGW / gPezGW0WeFshp7J7dTXZdSmDquZI15rEsz07QsKWy / SH / rjYVObAQJN78CuU7C41LRshEeTSBM0jBSnp3jL1Ocw66qe4sV6jbcQN6QzK377e + KzpUDmcxaB7plTWDSpjxVFWbY6PQcsz5d / h60wSKu90Ia9fNMHWs7cbyELhKVPBRs4JtWKndjtISCd5T34UnKmtTpq6g / ocrrw == RSA的密钥-20140716
请注意,此处显示的指纹与生成密钥时显示的指纹相匹配。
如果您正在停止实例并可以访问另一个实例,您也可以直接挂载根卷并修改密钥而不使用用户数据(密钥不会被覆盖,因为 cloud-init 默认每个实例只运行一次 SSH 配置)。如果您提前计划,另一种方法是设置 cloud-init(或 init 脚本)以在每次启动时记录 SSH 密钥,这会增加您在重新启动后在控制台日志中找到它们的可能性。
归档时间: |
|
查看次数: |
5446 次 |
最近记录: |