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

Docker通过ssh连接到远程守护程序-权限被拒绝(公钥),docker,ssh,docker-engine,Docker,Ssh,Docker Engine,我在连接远程(DigitalOcean)docker引擎时遇到问题。我所做的是 在Ubuntu 20.04上用Docker 19.03.12制作了一个水滴 创建新用户myuser并添加到远程主机上的docker组 为新用户创建一个.ssh/authorized_密钥,并设置权限、所有者等 已重新启动ssh和docker服务 结果 我可以使用myuser从Mac笔记本ssh连接到远程主机。(当我运行ssh时,keychain会询问id_rsa.key的密码短语。) 在我通过ssh登录到远程主机后,

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

  • 在Ubuntu 20.04上用Docker 19.03.12制作了一个水滴
  • 创建新用户myuser并添加到远程主机上的docker组
  • 为新用户创建一个.ssh/authorized_密钥,并设置权限、所有者等
  • 已重新启动ssh和docker服务
  • 结果

  • 我可以使用myuser从Mac笔记本ssh连接到远程主机。(当我运行ssh时,keychain会询问id_rsa.key的密码短语。)
  • 在我通过ssh登录到远程主机后,我可以毫无问题地运行docker ps、docker info
  • 问题

    在为远程引擎创建新上下文之前,我尝试在Mac笔记本电脑上从本地客户端运行一些docker命令。我感兴趣的是,下面的命令都不要求id(rsa密码短语)

  • docker-Hssh://myuser@液滴ip ps
    ->错误
  • DOCKER\u主机=ssh://myuser@液滴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代理
    ,这样Docker就可以在不请求密码的情况下使用密钥

    如果要添加默认密钥(
    ~/.ssh/id\u rsa
    ),只需运行:

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

    ssh-add ~/.ssh/id_rsa_special
    

    大多数现代桌面环境默认运行
    ssh代理程序。

    是否可以将ssh密钥加载到代理程序中,这样就不需要提示输入密码?我有那个配置,我无法重现你的问题。谢谢@larsks!如果你加上这个作为答案,我会把它标记为解决方案。使用ssh-add-K解决了我的问题。