自从CentOS8 停更以后,很多CentOS8的用户便转到了Rocky Linux,工作需要,做了一个具有SSH功能的RockyLinux 镜像。Dockerfile的代码如下:
FROM rockylinux:latest
MAINTAINER This is RockyLinux:ssh
#将源改为国内的阿里源
RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i.bak \
/etc/yum.repos.d/Rocky-*.repo
RUN dnf makecache
RUN dnf install -y openssh* net-tools lsof telnet passwd systemd
#修改root用户密码
RUN echo "123456" | passwd --stdin root
#设置不使用ssh服务端的pam模块
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
#缺少下面两句ssh登录会反应慢
RUN sed -i 's/#UseDNS yes/UseDNS no/g' /etc/ssh/sshd_config
RUN sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/g' /etc/ssh/sshd_config
#创建非对称秘钥
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
#关闭pam.d的ssh会话模块
RUN sed -i '/^session\s\+required\s\+pam_loginuid.so/s/^ /#/' /etc/pam.d/sshd
#创建ssh工作目录并设置权限
RUN mkdir -p /root/.ssh && chown root.root /root && chmod 700 /root/.ssh
#暴露端口
EXPOSE 22
#开启sshd服务
CMD ["/usr/sbin/sshd","-D"]
#生成镜像
docker build --no-cache --rm -t rockylinux8_ssh .
#运行容器
docker run -d --privileged -p22:22 -h rockylinux8ssh --name rockylinux8ssh rockylinux8_ssh