Docker通过ssh连接到远程守护程序-权限被拒绝publickey

问题描述

我无法连接到远程(DigitalOcean)泊坞窗引擎。我所做的是

  1. 在Ubuntu 20.04上使用Docker 19.03.12创建了一个小版本。
  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引擎?

解决方法

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

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

ssh-add

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

ssh-add ~/.ssh/id_rsa_special

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...