在Docker上下文中使用~/.ssh/config主机

qyzbxkaa  于 2023-02-18  发布在  Docker
关注(0)|答案(1)|浏览(135)

我试图找到一种方法,使用在用户的~/.ssh/config文件中定义的主机来定义Docker上下文。
我的~/.ssh/config文件包含:

Host my-server
  HostName 10.10.10.10
  User remoteuser
  IdentityFile /home/me/.ssh/id_rsa-mykey.pub
  IdentitiesOnly yes

我想创建一个Docker上下文,如下所示:

docker context create \
       --docker host=ssh://my-server \
       --description="remoteuser on 10.10.10.10" \
       my-server

发出docker --context my-server ps命令会引发错误,说明:
...请确保URL有效...无法解析主机名my-server:名称或服务未知
对于我所了解到的,docker命令使用sudo机制来提升它的特权,因此我猜它搜索/root/.ssh/config,因为ssh不使用$HOME变量。
我尝试将用户的配置作为根文件进行符号链接:

sudo ln -s /home/user/.ssh/config /root/.ssh/config

但这会引发另一个错误:
...请确保URL有效.../home/user/. ssh/config上的所有者或权限错误
创建/root/.ssh/config文件时也会发生同样的情况,该文件仅包含:

Include /home/*/.ssh/config

有人知道如何让ssh解析通过sudo发布的用户.ssh/config文件吗?
谢谢你。

uoifb46i

uoifb46i1#

你是否证实了你的理论(可能是正确的),即docker是以根用户身份运行的,直接将用户的~/.ssh/config内容复制到/root/.ssh/config中?如果这不起作用,你又回到了原点...
否则,符号链接或Include应该可以正常工作(符号链接继承它所指向的文件的权限)。
另一种可能性是您的权限实际上是错误的--不要忘记您必须同时更改~/.ssh~/.ssh/config上的权限。

chmod 700 /home/user/.ssh
chmod 600 /home/user/.ssh/config

甚至可能:

chmod 700 /root/.ssh
chmod 600 /root/.ssh/config

相关问题