如何停止将 EC2 中的 IP 添加到 ssh 的 known_hosts 中?

如何停止将 EC2 中的 IP 添加到 ssh 的 known_hosts 中?

我在学习使用 Amazon EC2 时启动/停止了许多新实例。每个临时实例都添加到 known_hosts 文件中。对于经常使用 EC2 的其他人来说,这是否是个问题?

我想告诉 ssh 每次连接到 amazonaws.com 时都跳过此步骤。有没有办法在配置中做到这一点?我使用的是 Linux 和 openssh。

答案1

这样做是为了防止中间人攻击。禁用它将禁用 ssh 工具的基本功能。

您可能希望保留一份.ssh/known_hosts不包含条目的文件副本,并在完成后将其替换。

答案2

尝试这个:

ssh -q -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no -i $MYKEY $MYUSERNAME@$MYIP $MYCOMMAND

您也可以在配置文件中执行以下操作:

主机 *.amazonaws.com
  root 用户
  StrictHostKeyChecking 否
  UserKnownHosts文件 /dev/null
  日志级别 QUIET

答案3

我编写了一个脚本来修复这个问题。它使用通过 EC2 控制台输出记录的 cloud-init 公钥。(您在评论中实际上指出这是唯一正确的方法)。

基本上,您告诉它一个实例名称,它会找到该实例 ID + IP,并使用在控制台输出中找到的公钥为其创建一个自定义的 UserKnownHostsFile,然后使用传递的其他参数启动 SSH。

https://github.com/kjpgit/ec2ssh/blob/master/ec2ssh.py

相关内容