我试图找到一种方法,使用在用户的~/.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
文件吗?
谢谢你。
1条答案
按热度按时间uoifb46i1#
你是否证实了你的理论(可能是正确的),即docker是以根用户身份运行的,直接将用户的
~/.ssh/config
内容复制到/root/.ssh/config
中?如果这不起作用,你又回到了原点...否则,符号链接或Include应该可以正常工作(符号链接继承它所指向的文件的权限)。
另一种可能性是您的权限实际上是错误的--不要忘记您必须同时更改
~/.ssh
和~/.ssh/config
上的权限。甚至可能: