为镜像创建SSH服务

    技术2022-07-10  132

    1 使用Dockerfile为镜像创建ssh服务

    1.1 准备工作

    首先在宿主机建立Dockerfile 工作空间,并准备ssh服务启动脚本,以及ssh免密登录的公钥文件

    # 1、创建生成镜像ssh服务的Dockerfile的工作空间目录,并进入该目录 $ mkdir ~/ssh_ubuntu $ cd ~/ssh_ubuntu # 2、创建ssh服务启动脚本并编辑保存脚本 $ touch start.sh $ vim start.sh # 3、创建免密登录认证文件authorized # 3.1 生成免密登录密钥文件 $ ssh-keygen # 一路回车,成功后,会在~/.ssh目录下创建公私密钥文件 # 3.2 将公钥内容重写到工作空间目录的authorized_keys文件中 $ cat ~/.ssh/公钥文件 > authorized_keys # 公钥文件一般为XXX.pub # 4、创建Dockerfile文件并编辑保存 $ touch Dockerfile $ vim Dockerfile

    1.1.1 脚本内容如下

    #!/bin/bash /usr/sbin/sshd -D

    1.1.2 Dockerfile内容如下

    # 继承基础镜像 FROM ubuntu:20.04 # 添加作者信息 MAINTAINER kevin<kevin@163.com> # 创建默认镜像工作目录 WORKDIR /root # 更新apt源为国内阿里源 可不添加源码 RUN echo "deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list \ && ehco "deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse" >> /etc/apt/sources.list \ && echo "deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list \ && echo "deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list \ && ehco "deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list \ && ehco "deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse" >> /etc/apt/sources.list \ && echo "deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list \ && echo "deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list RUN apt-get update && apt-get upgrade -y # 安装ssh服务 RUN apt-get install openssh-server -y # 清除apt缓存。如果要将该镜像作为以后创建其他镜像的基础镜像,不需要清除apt缓存 RUN apt-get clean && rm -rf /var/lib/apt/lists/* # 创建ssh运行目录和免密认证文件存放路径 RUN mkdir -p /var/run/sshd && mkdir -p .ssh # 取消PAM登录限制 RUN sed -ri "s/session required pam_loginuid.so/# session required pam_loginuid.so/g" /etc/pam.d/sshd # 将宿主机上准备好的免密认证文件和ssh启动脚本添加到镜像中,并赋予脚本执行权限 COPY authorized_keys ./ssh/authorized COPY start.sh . RUN chmod 755 start.sh # 设置服务暴露的端口为22端口 EXPOSE 22 # 设置运行容器时,默认启动ssh服务 CMD ["./start.sh"]

    1.2 创建镜像

    $ docker build -t myubuntu:myssh .

    1.3 运行容器

    $ docker run --name=myssh -P -d myubuntu:myssh

    1.4 测试ssh免密登陆

    ssh ip -p 端口

    2 使用容器创建镜像ssh服务

    $ docker run --name=myssh -it ubuntu:20:04 /bin/bash # 进入容器后,更新软件源 apt-get update # 替换为国内阿里云源,首先创建/etc/apt/sources.list.d/aliyun.list vim /etc/apt/sources.list.d/aliyun.list # 添加如下内容到文件中 deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse # 重新更新软件源 apt-get update # 安装和配置ssh服务 apt-get install openssh-server mkdir /var/run/sshd /usr/sbin/sshd -D & # 修改pam登录限制 sed -ri "s/session required pam_loginuid.so/# session required pam_loginuid.so/g" /etc/pam.d/sshd # 在root用户目录下创建.ssh目录,并复制公钥信息到.ssh/authorized_keys文件中 mkdir root/.ssh vi /root/.ssh/authorized_keys # 创建自启动start.sh文件,并添加权限 vi start.sh chmod +x start.sh # 脚本内容如下 #!/bin/bash /usr/sbin/sshd -D # 退出容器 exit # 保存镜像 $ docker commit fc1 myubuntu:myssh # 查看生成的新镜像 docker images # 使用镜像 docker run --name=myssh -P -d myubuntu:myssh /run.sh # 查看容器信息 docker ps # ssh登录访问 ssh ip -p port
    Processed: 0.009, SQL: 9