zoukankan      html  css  js  c++  java
  • Centos7创建支持ssh服务的docker镜像

    如何在centos7中使用docker创建一个支持ssh连接的容器

    1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4)

    docker pull centos:7.4.1708
    

    2.执行以下命令查看已有的镜像

    docker images
    

    3、基于centos镜像,创建一个名为centos7ssh的容器并进入容器(这里名称可以自定义)

    docker run -it --name centos7ssh centos:7.4.1708 /bin/bash

    4、进入容器后,安装ssh服务端和客户端,服务端能让其他主机远程登录本机,客户端能让本机远程登录其他主机

    yum -y install passwd openssl openssh-server openssh-clients
    

    5.创建 /var/run/sshd/目录,要不然sshd服务启动会报错

    mkdir /var/run/sshd/
    

    6.编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no

    可以进入sshd_config文件中去修改,也可以使用命令:

    sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
    

    7.创建公私密钥,输入命令后,直接按两次enter键确认就行了

    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服务了(&表示后台启动)

    /usr/sbin/sshd -D &
    

    9.此时使用命令ps -ef | grep sshd  便可以看到

    10.查询22端口是否处于监听状态

    yum -y install lsof
    lsof -i:22

    11.修改root密码

    passwd
    

    12.测试

    输入命令ssh localhost,然后输入之前设置的root密码

    上图中可以看到已经登录到本机了,也就说容器中的主机拥有了ssh远程登录其它主机的能力,当然你也可以登录其他主机。

    要退出的话,输入命令exit即可

    13.如何配置外部客户端访问docker里的centos7.4容器

    获取容器的ID等端口映射信息

    docker ps -a

    提交容器成为新的镜像,例如叫做sshd_centos7.4,输入

    docker commit 容器ID sshd_centos7.4
    

    启动这个镜像的容器,并映射本地的一个闲置的端口(例如15000)到容器的22端口,并启动容器的sshd(只要端口不冲突可以同时启动多个容器,如下图)

    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

    以下为网友提供的方法还未验证是否可用,可自行验证

    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
  • 相关阅读:
    学习asp.net比较完整的流程
    [图像思考法]我用图像故事法来理解与记忆冒泡排序
    MVC4与JSON交互的知识总结
    vulhub漏洞环境库内容整理
    kaliapt update时报The following signatures couldn't be verified because the public key is not available: NO_PUBKEY ED444FF07D8D0BF6解决方案
    sqlilabs靶机测试笔记
    Lord_Of_The_Root1.0.1靶机测试笔记
    utf16的单引号乱码,用于post型宽字节注入
    ubuntu16.04报错AttributeError: module 'platform' has no attribute 'linux_distribution'
    一文搞定OSCP的缓冲区溢出
  • 原文地址:https://www.cnblogs.com/caidingyu/p/10642158.html
Copyright © 2011-2022 走看看