向现有液滴添加新的 ssh 密钥时,DigitalOcean 权限被拒绝(公钥)?

Posted

技术标签:

【中文标题】向现有液滴添加新的 ssh 密钥时,DigitalOcean 权限被拒绝(公钥)?【英文标题】:DigitalOcean Permission denied (publickey) when adding new ssh keys to an existing droplet? 【发布时间】:2021-10-15 01:04:54 【问题描述】:

向 Digital Ocean Ubuntu VM 上的现有 droplet 添加新的 ssh 密钥时遇到问题。 SSH 密钥是通过浏览器通过Digial Ocean 门户添加的。

当第一次从本地 Ubuntu 机器添加 SSH 密钥时,它工作正常。

下次尝试从 MacOS 机器添加 SSH,即使成功添加了第二个 SSH 密钥也无法登录,并且不断收到 Permission denied (publickey) 错误。

在远程Ubuntu droplet上查看nano /etc/ssh/sshd_config可以看到PubkeyAuthenthication yes

【问题讨论】:

【参考方案1】:

添加第二个 SSH 密钥时,Digital Ocean 门户网站似乎存在问题。门户显示有 2 个 SSH 密钥 (Settings\Security\SSH keys)。

但是,检查 authorized_keys 文件 (nano .ssh/authorized_keys),只有第一个 SSH 密钥存在,第二个 SSH 密钥没有找到。

解决方法是登录 Ubuntu 服务器/droplet(在我的情况下使用工作的本地 Ubuntu 机器),然后手动将第二个 SSH 密钥(用于 MacOS 机器)添加到 authorized_keys 文件。

    服务器/Droplet Ubuntu: nano .ssh/authorized_key

    MacOS 本地机器: cat .ssh/id_ed25519.pub(我在本例中使用了 ed25519 类型,更改为您的 pub 密钥)。

    将 SSH 发布密钥粘贴到 authorized_key 文件。

    在 Ubuntu 服务器/droplet 上重新加载 ssh:systemctl reload ssh

【讨论】:

这正是我为解决这个问题所做的。我有 4 个 SSH 密钥。通过控制面板添加了 3 个,通过 GitLab 添加了 1 个。我无法使用控制面板添加第 5 个 SSH 密钥。我不得不手动编辑authorized_keys 文件。我通过工单向 Digital Ocean 报告了该问题。

以上是关于向现有液滴添加新的 ssh 密钥时,DigitalOcean 权限被拒绝(公钥)?的主要内容,如果未能解决你的问题,请参考以下文章

如何从字典列表中向现有键值对添加新的键值对?

向现有 django 模型添加新的唯一字段时的最佳实践

如何向现有 QTableWidget 添加新行?

sh 通过API向BitBucket添加新的部署密钥

将密钥对添加到现有 EC2 实例

在 Android 上向现有设备管理员添加新的使用策略