为什么用户数据参数中的脚本会忽略~/.ssh/config中的配置



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

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

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

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

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

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

在处理SSH密钥时,值得注意的是,用户数据命令将作为根用户运行,因此调用~/.ssh将检查/root/.ssh。您应该确保SSH密钥对运行它的用户有效,否则它将被视为不安全的。

文档中提供了有关用户数据的更多信息。

最新更新