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容器就设置好了

相关推荐
学思之道16 分钟前
给Linux操作系统命令取个别名
linux·运维·经验分享·学习方法
dong_beijing40 分钟前
GO语言工程构建示例-mac和linux适用
linux·运维·服务器
先生沉默先43 分钟前
Unity WebGL使用nginx作反向代理处理跨域,一些跨域的错误处理(添加了反向代理的配置依旧不能跨域)
运维·nginx·webgl
帅气的人1231 小时前
使用 docker-compose 启动 es 集群 + kibana
elasticsearch·docker
獨枭1 小时前
Ubuntu 通过 Docker 搭建 GitLab
ubuntu·docker·gitlab
2201_761199042 小时前
nginx 负载均衡1
linux·运维·服务器·nginx·负载均衡
suri ..2 小时前
【Linux】进程第三弹(虚拟地址空间)
linux·运维·服务器
害羞的白菜2 小时前
Nginx基础详解5(nginx集群、四七层的负载均衡、Jmeter工具的使用、实验验证集群的性能与单节点的性能)
linux·运维·笔记·jmeter·nginx·centos·负载均衡
纪伊路上盛名在2 小时前
如何初步部署自己的服务器,达到生信分析的及格线
linux·运维·服务器·python·学习·r语言·github
爱滑雪的码农2 小时前
快速熟悉Nginx
运维·nginx·dubbo