我正在使用云-init来使用UbuntuServer22.04.1设置一个Raspberry Pi。我想设置设备的SSH密钥,这样我就可以连接,而不容易受到中间人的攻击。
我目前的用户数据是:
#cloud-config
users:
- name: 'foo'
groups: users,adm,dialout,audio,netdev,video,plugdev,cdrom,games,input,gpio,spi,i2c,render,sudo
shell: /bin/bash
lock_passwd: true
ssh_authorized_keys:
- 'ssh-ed25519 ...'
ssh_keys:
ed25519_private: |
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
ed25519_public: ...当我进入设备ssh时,它的ECDSA指纹每次都会发生变化。(也就是说,如果我重新图像驱动器,让云init再次运行,然后去SSH进去,指纹是不同的。它从来不匹配用户数据中ed25519_private/public中的密钥的指纹。)所以我认为它在引导时产生了新的键,而我不知道如何阻止它。
如何设置设备的SSH密钥?
云init 文档的主机关键部分包括几个相关条目:
ssh_keys,那么就不会生成新的键。我不知道我做错了什么不是这样的。ssh_deletekeys: false置于ssh_keys (用户对象)之下,并在全局级别上。SSH‘’ing每次都会产生新的密钥指纹。ssh_genkeytypes: []置于ssh_keys (用户对象)之下,并在全局级别上。有时(我没有记录)这会导致我根本不能使用ssh,大概是因为没有键。在任何情况下,我都没有看到正确的密钥指纹(从ed25519_private派生)。ssh_keys是唯一声称允许我设置主机私钥的部分。最后,我刚刚做了一个ssh-keyscan <host> | ssh-keygen -lf -,很明显,我的设备除了生成一个ed25519密钥之外,还生成了一个ECDSA密钥:
$ ssh-keyscan <host> | ssh-keygen -lf -
# <host>:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
# <host>:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
# <host>:22 SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
256 SHA256:T50YAWwIgIOsQNuIXGBpoz1xPFXJkzffafibruuABtQ <host> (ECDSA)
256 SHA256:DB00DS6xzx5v7ZdVBe+z4nLZhOGVrKuSdhwdenhAm4s <host> (ED25519)(两个签名都不匹配ed25519_private的签名)
发布于 2022-11-20 19:16:57
最终的答案有三部分:
ssh_keys:需要在顶层,而不是在用户下面。ssh_deletekeys: false需要在顶层,而不是在ssh_keys:之下。\n,它开始工作。最终的用户数据定义如下:
#cloud-config
users:
- name: 'foo'
groups: users,adm,dialout,audio,netdev,video,plugdev,cdrom,games,input,gpio,spi,i2c,render,sudo
shell: /bin/bash
lock_passwd: true
ssh_authorized_keys:
- 'ssh-ed25519 ...'
ssh_keys:
ed25519_private: "-----BEGIN OPENSSH PRIVATE KEY-----\n...\n-----END OPENSSH PRIVATE KEY-----\n"
ed25519_public: ...
ssh_deletekeys: false发布于 2022-11-19 15:04:25
我假设您指的是这个场景中的主机密钥。
若要修复被覆盖的主机键,请设置
ssh_deletekeys: false默认情况下,每次检测到云init在新实例上运行时,它都会覆盖现有的主机键。这是出于安全目的的默认行为。在云环境中,常见的用例是从现有实例中创建新的映像。在该场景中,启动新实例但将现有主机键与前一个实例保持在一起将是一个安全漏洞。
对于像Raspberry这样的物理设备,这个用例不应该相关,所以您可以将ssh_deletekeys设置为false。
https://askubuntu.com/questions/1441490
复制相似问题