Docker上下文如何使用特定的ssh密钥

Fat*_*sis 16 docker

我想使用 docker 上下文通过 ssh 联系服务器。我的本地有许多不同的 ssh 密钥。如何告诉上下文使用特定的键?我试过了:

docker context create test --docker "host=ssh://<username>@<ip-of-server>,key=C:/path/to/key"
Run Code Online (Sandbox Code Playgroud)

但没有骰子,它总是要求输入密码。有没有办法告诉 docker 上下文使用什么 ssh 密钥?

Neo*_*son 20

您在提供的示例中尝试使用的密钥是指 TLS 密钥。

Docker 正在使用您的本地 SSH 代理。加载到代理中的任何密钥都可以用于连接:

  • 如果尚不存在,请安装 SSH 代理;
  • 生成 SSH 密钥对;
  • 将私钥添加到要发出 docker 命令的计算机上的 SSH 代理;
  • 在目标 Docker 主机上添加公钥,在<username-home>/.ssh/authorized_keys
  • 现在尝试通过常规 SSH 连接到目标 Docker 主机 ( ssh <username>@<ip-of-server>)。接受指纹。如果没有要求您输入密码,docker 也不会要求您输入密码。

创建并激活 docker 上下文,然后运行虚拟 docker 命令:

docker context create test --docker "host=ssh://<username>@<ip-of-server>"
docker context use test
docker ps
Run Code Online (Sandbox Code Playgroud)

  • 这比仅仅能够指定要使用的 -i 属性更烦人,但它确实有效。谢谢! (4认同)
  • 公平地说,您还可以在 `~/.ssh/config` 或 `/etc/ssh/ssh_config` (或者如果您不使用 Linux,则在 Windows 中等效项)中配置密钥(以及许多其他选项):https: //www.ssh.com/ssh/config/。这将适用于 Docker CLI,但不适用于 docker-compose 或 vscode docker 插件(可能还有其他插件),尽管开发人员表示他们最终会实现它。 (3认同)