【发布时间】:2021-11-04 15:50:40
【问题描述】:
我得到了一个由我的同事创建的图像(图像 OCID),其中包含非空的 .ssh/authorized_keys 用于 opc 、 ubuntu 和另一个自定义用户。当我基于该图像创建实例并传递公钥时,我在尝试ssh ubuntu@instance_public_IP 时*几乎总是得到“权限被拒绝”(我正在使用 ssh-agent 和 ssh-add 来管理我身边的私钥,并且已添加适当的密钥)。
到目前为止,我进行了以下故障排除:
- 我通过 oci 网站和基于“Canonical Ubuntu”的 terraform 创建了一个实例,并在那里传递了我的公钥 - ssh 连接成功
- 我反复销毁并重建上述实例以检查是否有某种形式的兑现 - ssh 工作正常
- 我基于运行“Canonical Ubuntu”的实例创建了一个自定义映像,其中
/home/ubuntu/.ssh/authorized_keys填充了过期的密钥,以检查预先存在的密钥是否会干扰部署过程 - ssh 工作正常 - 我根据同事提供的未修改图像创建了一个实例没有传递任何额外的密钥 - 他可以 ssh
- 我根据上图创建了一个实例并传递了额外的密钥 - 90% 的时间我无法 ssh 进入它,我的同事可以使用他的密钥进行 ssh 并在
authorized_keys中看到我的公钥,毕竟他已经存在键,除了 10% 的情况外,我无法 ssh,但我不知道它为什么会起作用,并且重新启动实例总是让我关闭 - 我如上所述创建了一个实例,让我的同事通过 ssh 登录,然后从
ubuntu用户中删除了authorized_keys,基于正在运行的实例创建了名为“clean-keys”的自定义映像,基于“clean-”创建了实例密钥”并传递了我的密钥 - ssh 不起作用 - 如上所述,但从所有用户中删除了
authorized_keys- ssh 不起作用
无论实例是由网站还是 terraform 创建的,上述行为都是相同的。
有问题的图像包含我需要能够自动部署的完全配置的环境。启动一些进程需要ssh连接。
我没有想法。
使用 terraform 构建实例时,我通过以下方式传递我的公钥
metadata = {
ssh_authorized_keys = file(var.ssh_public_key_path)
}
键匹配
【问题讨论】:
-
w.r.t 'clean-keys' image 您是否检查了 ubuntu 用户访问新上传的密钥的权限?还使用详细标志 -v 发布 ssh 输出,您可能会有所了解
标签: ssh terraform instance oracle-cloud-infrastructure