【问题标题】:AWS EC2 Instance - Using User Data to ssh an existing machine is not workingAWS EC2 实例 - 使用用户数据对现有机器进行 ssh 不工作
【发布时间】:2019-03-30 22:49:14
【问题描述】:

我需要在新创建的 EC2 实例启动后对现有机器进行 ssh 并运行一些脚本。我开始知道它可以通过用户数据字段来完成。

下面是我正在尝试的。

#!/bin/bash
service docker start
wget -P /home/ec2-user/ https://s3.amazonaws.com/(myKeyLocation)
chmod 400 /home/ec2-user/key.pem
ssh -i /home/ec2-user/key.pem ec2-user@MYEC2InstancePublicDNS nohup mkdir FileCreated

以下是 /var/log/cloud-init-output.log 的日志输出

Redirecting to /bin/systemctl start docker.service    
Host key verification failed.

我不确定为什么“主机密钥验证失败”提示错误。如果我登录到 Ec2 实例并执行相同的命令,它会按预期工作。

谁能知道是什么导致了这个问题?

【问题讨论】:

  • 这个错误一般是在~/.ssh/known_hosts中找不到/验证host key时出现的。脚本是否以其他用户身份运行?

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


【解决方案1】:

据我了解,您有两台 ec2 机器 host1 和 host2。您正试图通过执行上述 bash 脚本在 host2 上执行一些命令。

如果您说您已经手动尝试过并且工作正常,那么我不确定您到底要做什么。但是,我提到了两种从 ~/.ssh/known_hosts 中删除密钥的方法。

试试:

ssh-keygen -R hostname

它将删除旧密钥。

或者在引导脚本中登录机器时禁用主机密钥检查。

#!/bin/bash
service docker start
wget -P /home/ec2-user/ https://s3.amazonaws.com/(myKeyLocation)
chmod 400 /home/ec2-user/key.pem
ssh -o StrictHostKeyChecking=no -i /home/ec2-user/key.pem ec2-user@MYEC2InstancePublicDNS nohup mkdir FileCreated

如果我遗漏了什么,请告诉我。

【讨论】:

  • 是的 StrictHostkeyChecking 标志是我所缺少的。我试图自动扩展,并尝试在每次扩展新的 EC2 时在用户数据中运行它。
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-07-04
  • 1970-01-01
相关资源
最近更新 更多