gpt4 book ai didi

docker - ssh 从容器到远程主机,无需 openssh-client 设置

转载 作者:行者123 更新时间:2023-12-02 21:09:14 29 4
gpt4 key购买 nike

我有一个场景,其中主机 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 的最佳实践。

最佳答案

好的,根据问题的评论,我建议以下内容。

首先,您肯定需要一些容器可以以一种或另一种方式使用的私钥/公钥对。没有这个,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]"

关于docker - ssh 从容器到远程主机,无需 openssh-client 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55938225/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com