远程服务器 host上有一个docker container,如何通过 client 直接登陆 container 呢?
- container 使用 host 的网络,即使用了
--network=host
- 先配置 container的 ssdh(
/etc/ssh/sshd_config
),相关参数设置- port=2223 ##这个端口号不要跟本服务器其它Docker容器端口号重复!
- PermitRootLogin yes
- PubkeyAuthentication yes
- PasswordAuthentication yes
- 通过 SSH + jupyterlab进行访问的方式:
1)先CMD将 host 端的 port:9999 映射到本地8888(需要提前启动container)
ssh -L 8888:localhost:9999 -N username@host_ip -p 4464
2)通过本地 port:8888 访问 jupyterlab界面:网页端打开
localhost:9999
- jupyterlab 的访问端口为 9999
- ssh 访问 host 的端口为 4464
- 完全通过 SSH进行访问的方式:
1)先CMD登陆到 host 并映射 host端口到本地(第一个2248为映射的本地端口):
ssh -L 2248:localhost:2243 -N username@host_ip -p 4464
2)在另一个 CMD 窗口直接登录 docker
ssh root@localhost -p 2248
- 通过 v s c o d e vscode vscode进行访问:
1)设置 vscode 的ssh配置文件(C:\Users\username\.ssh\config
),添加如下代码:
Host host1
HostName host_ip
Port 4464
User username
ForwardAgent yes
Host container1
HostName host_ip
Port 2243
User root
ForwardAgent yes
ProxyJump host1
2)如图所示,在vscode里面会出现 container1,登陆即可(保证container中已经启动ssh :/etc/init.d/ssh restart)