Docker 通过 ssh 连接到远程守护进程 - 权限被拒绝(公钥)

Docker connect to remote daemon via ssh - Permission denied (publickey)

我在连接到远程 (DigitalOcean) docker 引擎时遇到问题。我所做的是

  1. 在 Ubuntu 20.04.Docker 19.03.12 制作了一个 droplet。
  2. 创建一个新用户 myuser 并添加到远程主机上的 docker 组。
  3. 为新用户创建一个 .ssh/authorized_keys 并设置权限、所有者等
  4. 重新启动了 ssh 和 docker 服务。

结果

  1. 我可以使用 myuser 从我的 Mac 笔记本通过 ssh 连接到我的远程主机。 (当我 运行 ssh 钥匙串要求 id_rsa.key 的密码时。)
  2. 在我通过 ssh 登录到远程主机后,我可以 运行 docker ps, docker 信息没有任何问题。

问题

在我为远程引擎创建新上下文之前,我尝试从我的 Mac 笔记本电脑上的本地客户端 运行 一些 docker 命令。对我来说有趣的部分是下面命令的 none 要求输入 id_rsa 密码)

  1. docker -H ssh://myuser@droplet_ip ps -> 错误
  2. DOCKER_HOST=ssh://myuser@droplet_ip docker ps -> 错误

错误

docker -H ssh://myuser@droplet_ip ps
error during connect: Get http://docker/v1.40/containers/json: command [ssh -l myuser -- droplet_ip docker system dial-stdio] has exited with exit status 255, please make sure the URL is valid, and Docker 18.09 or later is installed on the remote host: stderr=myuser@droplet_ip: Permission denied (publickey).

我错过了哪一步?如何连接到远程 docker 引擎?

听起来 Docker 可能不允许 ssh 在连接时提示输入密钥密码。最简单的解决方案可能是将您的密钥加载到 ssh-agent,这样 Docker 就可以使用密钥而无需请求密码。

如果您想添加默认密钥 (~/.ssh/id_rsa),您只需 运行:

ssh-add

您可以通过提供密钥路径来添加特定密钥:

ssh-add ~/.ssh/id_rsa_special

大多数现代桌面环境 运行 默认情况下 ssh-agent 进程。