Centos7创建支持ssh服务的docker镜像
如何在centos7中使用docker创建一个支持ssh连接的容器
1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4)
1 | docker pull centos:7.4.1708 |
2.执行以下命令查看已有的镜像
1 | docker images |
3、基于centos镜像,创建一个名为centos7ssh的容器并进入容器(这里名称可以自定义)
1 | docker run -it --name centos7ssh centos:7.4.1708 /bin/bash |
4、进入容器后,安装ssh服务端和客户端,服务端能让其他主机远程登录本机,客户端能让本机远程登录其他主机
1 | yum -y install passwd openssl openssh-server openssh-clients |
5.创建 /var/run/sshd/目录,要不然sshd服务启动会报错
1 | mkdir /var/run/sshd/ |
6.编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no
可以进入sshd_config文件中去修改,也可以使用命令:
1 | sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config |
7.创建公私密钥,输入命令后,直接按两次enter键确认就行了
1 2 3 | ssh -keygen -t rsa -f /etc/ssh/ssh_host_rsa_key ssh -keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key ssh -keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key |
8.完成上述几步后,可以开启ssh服务了(&表示后台启动)
1 | /usr/sbin/sshd -D & |
9.此时使用命令ps -ef | grep sshd 便可以看到
10.查询22端口是否处于监听状态
1 | yum -y install lsof |
1 | lsof -i:22 |
11.修改root密码
1 | passwd |
12.测试
输入命令ssh localhost,然后输入之前设置的root密码
上图中可以看到已经登录到本机了,也就说容器中的主机拥有了ssh远程登录其它主机的能力,当然你也可以登录其他主机。
要退出的话,输入命令exit即可
13.如何配置外部客户端访问docker里的centos7.4容器
获取容器的ID等端口映射信息
1 | docker ps -a |
提交容器成为新的镜像,例如叫做sshd_centos7.4,输入
1 | docker commit 容器ID sshd_centos7.4 |
启动这个镜像的容器,并映射本地的一个闲置的端口(例如15000)到容器的22端口,并启动容器的sshd(只要端口不冲突可以同时启动多个容器,如下图)
1 | docker run -d -p 15000:22 sshd_centos7.4 /usr/sbin/sshd -D |
现在打开新的终端,输入ssh root@宿主机IP地址 -p 15000,如果能连接成功,会要求输入密码的,输入刚才passwd命令设置的root账户密码就可以进入容器的终端了
如果连接失败,请检查防火墙是否未开放该端口。
参考文档:https://www.cnblogs.com/whutxldwhj/p/6427530.html
https://blog.csdn.net/u013140345/article/details/79777311
https://blog.csdn.net/weipeng19861130/article/details/79006555
以下为网友提供的方法还未验证是否可用,可自行验证
1 2 3 4 5 6 7 8 9 10 11 12 | docker pull centos:7.2.1511 // 也可以不指定版本,默认最新latest docker run -t -i centos:7.2.1511 /bin/bash // 启动并进入docker 容器 yum install wget wget -O /etc/yum .repos.d /CentOS-Base .repo http: //mirrors .aliyun.com /repo/Centos-7 .repo yum cleal all yum install passwd yum install openssh-server #安装ssh服务端 echo 'passw0rd' | passwd root // 修改root密码 docker commit [容器ID] [新镜像名] // 使用commit 提交,简单的配置可以使用dockerfile创建镜像,但是要配置环境比较复杂,还是需要用到commit docker run -d -p 220:22 c7ssh /usr/sbin/sshd -D // 启动容器,并绑定容器端口22到宿主主机, 可以有多个-p 绑定多个端口,例如22端口让远程客户端连接,8080 可以访问容器内tomcat |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】