为镜像创建SSH服务

25 篇文章 0 订阅

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值