5

我在连接到远程(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 info 没有任何问题。

问题

在为远程引擎创建新上下文之前,我尝试在我的 Mac 笔记本电脑上从本地客户端运行一些 docker 命令。对我来说有趣的部分是以下命令都不需要 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 引擎?

4

1 回答 1

6

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

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

ssh-add

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

ssh-add ~/.ssh/id_rsa_special

大多数现代桌面环境ssh-agent默认运行一个进程。

于 2020-09-10T13:09:07.597 回答