ssh从容器到远程主机没有openssh-client设置

问题描述 投票:0回答:1

我有一个场景,主机H1运行docker容器C1和主机H2(在同一网络内)正在运行docker容器C2。 H1和H2之间的SSH使用公钥验证进行设置。我的用例是能够通过从C1调用命令在C2上运行脚本。我可以通过在C1(openssh-client)上设置ssh来实现这一点,它涉及将私钥从H1复制到C1上的.ssh目录,为其分配适当的权限,然后运行ssh -t H2 docker exec C2 sh <script_name>

有没有办法在没有在C1中设置ssh客户端的情况下实现这一目标?

我尝试在C1中创建与拥有私钥的H1相同的用户U,具有相同的groupID和userID,然后在以该用户身份登录后尝试从C1进行ssh'ing,但这不起作用。

我不确定是否将私钥从正在运行的主机上复制到容器映像是沿着dockers / vms的最佳实践。

docker ssh docker-container
1个回答
0
投票

好的,根据问题的评论,我建议如下。

首先,您肯定需要一些容器可以使用的私钥/公钥对,以一种或另一种方式。没有这个,SSH显然是行不通的。

但是,您可以将SSH_AUTH_SOCK环境变量从主机安装到安装了SSH客户端的容器中,而不是将私钥复制到容器中。如果您的主机有权连接到目标,那么容器也将是。最小例子:

docker run --rm -it -v $SSH_AUTH_SOCK:/ssh-agent -e "SSH_AUTH_SOCK=/ssh-agent" --entrypoint sh panubo/sshd -c "ssh -o StrictHostKeyChecking=no [REMOTE_MACHINE_IP]"
© www.soinside.com 2019 - 2024. All rights reserved.