我在一个远程集群上工作,在那里我可以直接访问一个管理器节点,该管理器节点使用 Slurm 将我重定向到计算节点。
在其中一个计算节点上,我有一个正在运行的 Docker 容器,我想从我的本地机器通过 ssh 进入这个容器。所以,情况是这样的:
local_machine --> manager_node --> compute_node
|
V
docker_container
在本地机器上,我有一个 ~/.ssh/config 文件:
Host manager_node
HostName manager_node_address
User my_user
IdentityFile ~/.ssh/id_rsa
Host compute_node
HostName compute_node_address
User my_user
ProxyJump manager_node
IdentityFile ~/.ssh/id_rsa
到目前为止,一切正常,我可以通过以下方式连接到 compute_node 而无需密码:
ssh compute_node
在 compute_node 上,我启动了一个运行 ssh 的 Docker 容器:
docker run -it -p 20090:22 container_name
所以,从 compute_node 我可以使用:
ssh root@container_ip
并从 compute_node 本身访问 Docker 容器(它需要密码,我在 Dockerfile 中设置)。
问题是,我正在尝试将所有内容放在一起,即我想从本地计算机通过 ssh 连接到容器。 我正在尝试使用:
ssh -J my_user@compute_node:20090 root@container_ip_address
但现在我需要输入 compute_node 的密码。我没有密码,直接连接compute_node一般不需要密码。我该如何解决这个问题?