为什么在我第一次登录之前在我的新 Ubuntu 20.04.1 实例上安装了 SSH 公钥?我被黑客入侵了吗?

Pau*_*nan 5 ssh raspberrypi

我之前购买/配置了一个新的 Raspberry Pi 4 来运行 Ubuntu 20.04.1 和 Apache。我正在将我的 AT&T 调制解调器上的端口 80 转发到 Raspberry Pi,并且可以毫无问题地托管一些网站。

我今天收到了一个新的Raspberry Pi,并首次启动了 Ubuntu 20.04.1 的新实例。Ubuntu 进入登录屏幕,当我在我的笔记本电脑上设置一些东西以通过 SSH 登录时,我的 Raspberry Pi 突然在终端上有一大块输出。

我认为它与公钥相对应,因为我计划为 SSH 登录添加我自己的公钥。这对我来说似乎有点可疑,因为我不记得在我设置原始 Raspberry Pi 时发生过这种情况。我从调制解调器中删除了端口转发,同时将 SD 卡擦干净并重新启动了 Ubuntu,结果出现了同样的问题。我的树莓派被黑了吗?在我第一次登录之前,是否有一些外部实体将他们自己的 SSH 密钥添加到 Ubuntu?

mur*_*uru 18

您可以cloud-init用来填充 SSH 授权密钥。但是,该消息明确指出:

ci-info: no authorized SSH key fingerprints found for user ubuntu
Run Code Online (Sandbox Code Playgroud)

显示的指纹用于主机密钥,由系统提供给客户端。


小智 12

链接图像中的密钥是主机密钥。这些不是您的私人登录密钥。

如果我们使用 SSL 术语,则主机密钥有点像 Web 服务器中的 SSL 密钥。它是私有的并且是必要的,但不建议在主机之间共享它们,因此第一次引导会在主机上为您生成,这应该是主机独有的。同时还会生成相应的公钥,这就是您在那里看到的指纹。

SSH 支持多种不同的密钥格式——这就是为什么那里有 ECDSA、ED25519、RSA、DSA 的原因。您可以在 /etc/ssh/ssh_config 中禁用 RSA 和 DSA,如果您只打算使用现代 SSH 客户端来访问它,然后删除这些密钥。

当您第一次连接到 SSH 服务器时,它会将公钥发送到您的客户端。客户端将从显示的那些中选择它支持(并配置为允许)的最安全的。然后它会显示它选择的公钥的指纹。将您的图像放在手边,您可以验证这是您的客户向您显示的指纹。您需要验证它确实是主机的指纹。指纹缓存在known_hosts文件中,下次不需要再和你确认。这基本上是您的 Web 浏览器检查 CA 颁发的证书并显示挂锁的手动等价物。

之后,它将继续为每个新会话选择该特定公钥,并将针对其缓存测试指纹。除非指纹发生变化,否则不会再次提示您。如果更改,您将收到提示。

同样,这些都与您的登录密钥无关。没有您的密码,其他人无法登录。在您将公共登录密钥放入authorized_keys 文件之前,您仍然需要密码才能登录。

  • 理论上,您应该给坐在预定远程服务器终端前的熟人打电话,让他​​们向您读取主机密钥的指纹,然后您继续您的 ssh 会话*仅*指纹匹配。整个协议是为了保护您免受中间人冒充目标主机的侵害。-- 在实践中,大多数人都对 Trust On First Use 感到满意并立即按回车键,但是您*肯定* 应该担心以后是否会向您提出同一主机的问题 (2认同)