通过 SSH 远程连接 docker 容器

文章目录

一、容器端口映射

  1. 在启动容器前,通常会将 docker 容器中的 ssh 的默认端口与宿主机端口之间进行映射。
  2. 通常使用 docker run 命令来指定宿主机和容器之间的端口映射docker run -d -p <host_port>:<container_port> <image_name>-p 指定 宿主机端口容器端口 之间的关系,ssh 默认端口号是 22 ,如果不知道宿主机哪个端口是空闲的,可以指定 -p :22 ,让 docker 随机选择 一个宿主机的端口映射到容器的 22 端口,并且输出被选择的端口。端口号必须是 1 到 65535 之间的有效数字。
  3. 如果在 run 的时候指定了-net=host ,直接使用主机的网络栈,docker会忽略端口映射,因为容器直接使用主机的网络接口,不需要做端口映射。
  4. 启动容器后的映射结果:0.0.0.0:7777->22/tcp, :::7777->22/tcp ,其中0.0.0.0:7777->22/tcp 表示将宿主机的 IPv4 地址上的 7777 端口映射到容器的 22 端口。:::7777->22/tcp 表示将宿主机的 IPv6 地址上的 7777 端口映射到容器的 22 端口。
  5. 这样,在宿主机的所有网络接口 (包括 IPv4 和 IPv6)上监听 7777 端口。无论是从 IPv4 还是 IPv6 地址进行连接,都能够访问容器的 22 端口。

二、安装并启动SSH服务

  1. 启动 docker 容器之后,需要确保容器安装并启动了ssh 服务端才能远程连接。

    bash 复制代码
    apt update
    apt install -y openssh-server  # 安装open-ssh的服务端
  2. 修改容器内配置文件 /etc/ssh/sshd_config,允许 ssh 服务正常工作,确保以下参数没有被注释,并设置为 yes

    bash 复制代码
    PermitRootLogin yes
    PasswordAuthentication yes
  3. 设置 root 用户密码:passwd root 并在容器内启动 ssh 服务:service ssh start

三、连接docker容器

  1. 如果是终端连接,使用ssh -p 7777 root@宿主机ip 并输入 root 用户密码即可进入容器。

  2. vs code 中一般编辑本地用户的 ssh 配置文件 (~/.ssh/config )并增加如下内容。

    bash 复制代码
    Host docker-container  # 随意名称
        HostName 127.0.0.1 # 宿主机ip
        Port 7777 # 端口映射
        User root # 容器用户名
  3. 通过配置好的主机名(docker-container )选择 Remote-SSH: Connect to Host 连接。

小结

上述内容均来自个人实践,具有个人习惯性,如有其他问题欢迎在评论区讨论,谢谢!!

相关推荐
C7211BA8 分钟前
Visual Studio Code (VS Code) 官方下载渠道
ide·vscode·编辑器
zhangfeng113312 分钟前
win7 VSCode 1.70设置R语言的版本,电脑上有两个版本
ide·vscode·r语言
学习和思考14 分钟前
为什么我的vscode有的时候可以跳转,有的时候不能跳转
arm开发·ide·驱动开发·vscode·学习·1024程序员节
新手村领路人14 分钟前
vscode ssh远程连接 ubuntu虚拟机
ide·vscode·ssh
小-黯15 分钟前
VSCode + XMake搭建OpenGL开发环境
vscode·opengl·xmake
Bruce_Liuxiaowei19 分钟前
Mac与Kali主机间SSH连接故障排除:主机密钥变更的解决方案
运维·macos·网络安全·ssh
java_logo1 小时前
Docker 部署 Rocky Linux 全流程教程
linux·运维·服务器·docker·容器·1024程序员节
2501_938791831 小时前
服务器镜像安全:Docker 镜像漏洞扫描(Trivy)与基础镜像优化
服务器·安全·docker
老司机张师傅1 小时前
【微服务实战之Docker容器】第十章-compose容器编排
docker·微服务·架构
ghie90901 小时前
利用 Docker 和 Kubernetes 实现微服务部署
docker·微服务·kubernetes