【问题标题】:Why does the script in the user data argument ignore the configuration in ~/.ssh/config?为什么用户数据参数中的脚本会忽略 ~/.ssh/config 中的配置?
【发布时间】:2020-07-25 00:05:29
【问题描述】:

我正在尝试在 AWS 上设置一些现场实例启动模板。启动时,必须执行一组命令,其中scp 命令实质上是将文件复制到远程主机。

为此,我编辑了 ~/.ssh/config 文件并添加了必要的 SSH 密钥来设置安全连接。当我在 AWS 实例(例如 scp file_name.txt ubuntu@host:/home/ubuntu/)上手动测试它时,这非常有效。

但是,当我在 user data 参数中包含相同的 SSH 命令时(这样它将在实例启动时自动执行),连接失败,因为未应用 .ssh/config 中的配置。但是当我直接在这个用户数据命令中手动提供配置选项时,它可以工作。

那么为什么用户数据参数中的脚本会忽略~/.ssh/config中的配置呢?如何强制脚本咨询~/.ssh/config

相关问题:我可以通过简单地调用关联的命令名称(例如touch file_name.txt)手动调用实例中的内置命令。在用户数据中执行此操作时,我必须明确指定相关二进制文件的完整路径(例如/usr/bin/touch file_name.txt),否则它会抱怨找不到该命令。为什么会这样?这背后的原因可能是实例尚未正确初始化吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2


    【解决方案1】:

    如果您尝试调试用户数据,您应该检查将包含输出的 /var/log/cloud-init-output.log 文件。

    当您处理 SSH 密钥时,值得注意的是 user-data 命令将以 root 用户身份运行,因此调用 ~/.ssh 将签入 /root/.ssh。您应该确保 SSH 密钥对运行它的用户有效,否则将被视为不安全。

    有关user-data 的更多信息,请参阅文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-15
      • 1970-01-01
      相关资源
      最近更新 更多