我在学习使用 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。