【问题标题】:Docker connect to remote daemon via ssh - Permission denied (publickey)Docker 通过 ssh 连接到远程守护进程 - 权限被拒绝(公钥)
【发布时间】:2020-12-28 21:18:24
【问题描述】:

我在连接到远程 (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 引擎?

【问题讨论】:

  • 也许将您的 ssh 密钥加载到代理中,这样就无需提示输入密码?我有该配置,但无法重现您的问题。
  • 谢谢@larsks!如果您将此添加为答案,我会将其标记为解决方案。使用 ssh-add -K 解决了我的问题。

标签: docker ssh docker-engine


【解决方案1】:

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

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

ssh-add

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

ssh-add ~/.ssh/id_rsa_special

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-29
    • 2021-06-16
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多