Docker容器实现SSH远程直连

 更新时间:2023年08月21日 10:45:54   作者:老秦包你会  
在某些特殊需求下,我们想ssh直接远程连接docker 容器,本文主要介绍了Docker容器实现SSH远程直连,具有一定的参考价值,感兴趣的可以了解一下

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

1. 下载docker镜像

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

docker pull tomcat

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

docker run -it -d -p8088:8080 tomcat /bin/bash

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

docker ps -a

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

image-20230621132259092

2. 安装ssh服务

进入容器

docker exec -it 容器ID /bin/bash

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

apt-get update

安装ssh服务

apt-get install openssh-server

安装文件编辑器 vim

apt-get install vim

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

passwd

修改配置文件

vim /etc/ssh/sshd_config

需要修改两个地方:

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

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

image-20230621134037435

修改完成后,重启ssh服务

service ssh restart

3. 本地局域网测试

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

ssh -p 8088 root@192.168.10.125

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

image-20230621134923601

4. 安装cpolar

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

使用一键脚本安装命令

curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

向系统添加服务

sudo systemctl enable cpolar

启动cpolar服务

sudo systemctl start cpolar

5. 配置公网访问地址

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

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

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

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

点击 创建

image-20230621140339055

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

image-20230621140440856

6. SSH公网远程连接测试

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

ssh -p 端口 root@公网地址

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

image-20230621140958009

7.固定连接公网地址

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

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

保留一个固定tcp地址

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

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

点击 保留

image-20230621141349951

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

image-20230621141415688

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

image-20230621141500437

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

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

点击 更新

image-20230621141538237

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

image-20230621141556522

8. SSH固定地址连接测试

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

image-20230621141859079

到此这篇关于Docker容器实现SSH远程直连的文章就介绍到这了,更多相关Docker SSH远程直连内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker-compose管理容器network与ip问题

    docker-compose管理容器network与ip问题

    这篇文章主要介绍了docker-compose管理容器network与ip问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker容器迁移Oracle到MySQL的实现方法

    Docker容器迁移Oracle到MySQL的实现方法

    本文主要介绍了Docker容器迁移Oracle到MySQL的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker中忽略文件的实现

    Docker中忽略文件的实现

    Docker忽略文件是指在Docker镜像构建过程中,用于忽略指定文件或目录的一种机制,本文主要介绍了Docker中忽略文件的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • IDEA使用Docker插件(菜鸟教程)

    IDEA使用Docker插件(菜鸟教程)

    本文主要介绍了IDEA使用Docker插件,文中通过图文示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Docker镜像端口映射的原理及实现

    Docker镜像端口映射的原理及实现

    在使用Docker时,端口映射是一个重要的概念,本篇博客将向您介绍什么是端口映射,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • Docker 镜像导入导出过程介绍

    Docker 镜像导入导出过程介绍

    这篇文章主要介绍了Docker 镜像导入导出过程,文章围绕主题展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • Docker容器Consul部署概述

    Docker容器Consul部署概述

    这篇文章主要介绍了Docker容器Consul部署概述,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • 在Docker容器中不需要运行sshd的原因浅析

    在Docker容器中不需要运行sshd的原因浅析

    在一个容器中运行SSH服务器,这真的是一个错误(大写字母W)吗?老实说,没那么严重。当你不去访问Docker主机的时候,这样做甚至是极其方便的,但是这仍然需要在容器中取得一个shell
    2016-11-11
  • 利用docker搭建web服务环境的方法步骤

    利用docker搭建web服务环境的方法步骤

    这篇文章主要给大家介绍了关于利用docker搭建web服务环境的方法步骤,文中通过是示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习下吧。
    2017-09-09
  • docker数据卷容器挂载不上的解决方法

    docker数据卷容器挂载不上的解决方法

    docker容器之间可以通过相互挂载实现数据共享,本文主要介绍了docker数据卷容器挂载不上的解决方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论