SSH公网远程直连Docker容器

文章目录

    • [1. 下载docker镜像](#1. 下载docker镜像)
    • [2. 安装ssh服务](#2. 安装ssh服务)
    • [3. 本地局域网测试](#3. 本地局域网测试)
    • [4. 安装cpolar](#4. 安装cpolar)
    • [5. 配置公网访问地址](#5. 配置公网访问地址)
    • [6. SSH公网远程连接测试](#6. SSH公网远程连接测试)
    • 7.固定连接公网地址
    • [8. SSH固定地址连接测试](#8. SSH固定地址连接测试)

在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器

1. 下载docker镜像

本文下载一个tomcat镜像为例子,输入命令拉取tomcat镜像:

shell 复制代码
docker pull tomcat

我们下载的是tomcat镜像,tomcat端口容器内部默认是8080,我们把tomcat容器内部端口映射到宿主机的8088端口上,运行镜像容器,

shell 复制代码
docker run -it -d -p8088:8080 tomcat /bin/bash

运行后查看一下正在运行的容器

shell 复制代码
docker ps -a

可以看到已经运行了,同时也看到了容器ID

2. 安装ssh服务

进入容器

shell 复制代码
docker exec -it 容器ID /bin/bash

进入容器后,我们安装ssh服务,首先更新包管理器

shell 复制代码
apt-get update

安装ssh服务

shell 复制代码
apt-get install openssh-server

安装文件编辑器vim

shell 复制代码
apt-get install vim

设置SSH登录密码,第一次是设置密码,第二次是确认密码,输入两次

shell 复制代码
passwd

修改配置文件

shell 复制代码
vim /etc/ssh/sshd_config

需要修改两个地方:

第一:把ssh 服务默认的22端口设置为与容器服务的端口一致,如我们是tomcat容器,就设置为8080,因为我们运行容器的时候挂载的是内部的8080端口映射到宿主机的8088端口,所以需要和容器内部端口保持一致,

第二:将PermitRootLogin prohibit-password修改为PermitRootLogin yes,开启使用密码登录,设置完成后保存退出

修改完成后,重启ssh服务

shell 复制代码
service ssh restart

3. 本地局域网测试

上面我们设置完成了在容器内部安装了ssh服务,现在进行局域网测试连接,用户名默认是root,端口号这里需要输入我们映射到宿主机的8088端口

shell 复制代码
ssh -p 8088 root@192.168.10.125

登录过程中需要输入密码,即上面设置的密码,成功后,可以看到我们成功进入了容器内部

4. 安装cpolar

安装cpolar我们在宿主机安装,不需要进入容器内部安装

  • 使用一键脚本安装命令
shell 复制代码
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
shell 复制代码
sudo systemctl enable cpolar
  • 启动cpolar服务
shell 复制代码
sudo systemctl start cpolar

5. 配置公网访问地址

成功启动cpolar服务后,我们在浏览器上访问Linux局域网ip地址+9200端口,登录cpolar web UI管理界面。

cpolar官网地址: https://www.cpolar.com

登录成功后,点击左侧仪表盘的隧道管理------创建隧道:

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复
  • 协议:tcp
  • 本地地址:8088
  • 域名类型:临时随机TCP端口
  • 地区:选择China VIP

点击创建

然后打开左侧在线隧道列表,查看刚刚创建隧道后生成的tcp连接的公网地址

6. SSH公网远程连接测试

使用ssh 命令行连接模式,注意,-p后面的端口是cpolar中生成的公网地址对应的端口

shell 复制代码
ssh -p 端口 root@公网地址

执行后,我们可以看到成功进入容器,这样ssh 远程直接连接docker容器就设置好了

7.固定连接公网地址

要注意的是,以上步骤使用的是随机临时tcp端口地址,所生成的公网地址为随机临时地址,该公网地址24小时内会随机变化。我们接下来为其配置固定的TCP端口地址,该地址不会变化,设置后将无需每天重复修改地址。

配置固定tcp端口地址需要将cpolar升级到专业版套餐或以上。

保留一个固定tcp地址

登录cpolar官网,点击左侧的预留,找到保留的tcp地址,我们来为我的世界保留一个固定tcp地址:

  • 地区:选择China vip
  • 描述:即备注,可自定义

点击保留

地址保留成功后,系统会生成相应的固定公网地址,将其复制下来

打开cpolar web ui管理界面,点击左侧仪表盘的隧道管理------隧道列表,找到我们上面创建的TCP隧道,点击右侧的编辑

修改隧道信息,将保留成功的固定tcp地址配置到隧道中

  • 端口类型:修改为固定tcp端口
  • 预留的tcp地址:填写官网保留成功的地址,

点击更新

隧道更新成功后,点击左侧仪表盘的状态------在线隧道列表,可以看到公网地址已经更新成为了固定tcp地址。

8. SSH固定地址连接测试

输入ssh 连接命令,使用我们上面的公网地址和端口,我们可以看到,连接成功,固定ssh远程直接连接docker容器就设置好了

转载自cpolar极点云文章:SSH远程直连Docker容器

相关推荐
2601_949814491 分钟前
使用Kubernetes部署Spring Boot项目
spring boot·容器·kubernetes
图扑可视化7 分钟前
油气集输 WebGIS 数字孪生管控大屏
运维·gis·数字孪生·油气运输·油气集输
CDN36022 分钟前
CDN 无法播放音视频?流媒体回源与 Range 配置修复
运维·音视频
剑锋所指,所向披靡!26 分钟前
linux的目录结构
linux·运维·服务器
zt1985q28 分钟前
本地部署 Home Assistant 高级自动化 AppDaemon 并实现外部访问
运维·服务器·网络·网络协议·自动化
志栋智能30 分钟前
轻量级部署:低成本实现混合云环境自动化巡检
运维·网络·人工智能·自动化
结衣结衣.39 分钟前
【Linux】命名管道的妙用:实现进程控制与实时字符交互
linux·运维·开发语言·学习·操作系统·交互
IMPYLH1 小时前
Linux 的 groups 命令
linux·运维·服务器·bash
优化控制仿真模型1 小时前
【2026年6月最新】英语六级高频核心词汇1500个+历年真题PDF
经验分享·pdf
星辰_mya1 小时前
数据库运维与数据安全:备份恢复、日志分析与故障排查
运维·数据库·后端·面试·架构师