添加SSH服务
1、基于commit命令创建
1.1 启动容器
[root@master ~]# docker run -it ubuntu:18.04 bash
#更新软件源
root@d8949a9bb837:/# apt-get update
root@d8949a9bb837:/# apt-get install -y vim
1.2 如果默认的官方源速度慢,可以替换为国内的镜像源,创建/etc/apt/source.list.d/163.list文件
root@d8949a9bb837:/# vim /etc/apt/sources.list.d/163.list
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
#更新软件源信息
root@d8949a9bb837:/# apt-get update
1.3 安装和配置ssh服务
#使用openssh-server作为服务器
root@d8949a9bb837:/# apt-get -y install openssh-server
#启动SSH服务过程并不会创建/var/run/sshd目录,所以需要手动创建
root@d8949a9bb837:/# mkdir -p /var/run/sshd
root@d8949a9bb837:/# /usr/sbin/sshd -D &
#取消pam登录限制
root@d8949a9bb837:/# sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#创建SSH密钥对,并创建authorized_keys文件
root@d8949a9bb837:~# ssh-keygen -t rsa #使用rsa加密算法,也可以使用dsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): #密码短语可以为空
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa. #私钥文件存储目录
Your public key has been saved in /root/.ssh/id_rsa.pub. #公钥文件存储目录
The key fingerprint is:
SHA256:MmBjZuzJKPvdd3l80Kf5ABqqsaFPPTbMZSfLRNnnLBs root@d8949a9bb837
The key's randomart image is:
+---[RSA 2048]----+
| |
| . o |
| O o . . |
| O + . + |
|. . + o S * E.o |
| o * * *.=. .|
|. + O +o...+ |
| . . + *.oo o +. |
| . o.=. . . . ..|
+----[SHA256]-----+'
#将公钥的数据存入authorized_keys文件,实现免密登录
root@d8949a9bb837:~# cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
1.4 创建自动启动SSH服务的可执行文件run.sh
root@7403bdb9a339:/# vi run.sh
#!/bin/bash
/usr/sbin/sshd -D
root@7403bdb9a339:/# chmod +x run.sh
root@7403bdb9a339:/# exit
#保存镜像
[root@master ~]# docker commit 7403bd sshd:ubuntu
#启动镜像
[root@master ~]# docker run -p 10022:22 -d sshd:ubuntu /run.sh
#连接SSH
[root@master ~]# ssh 192.168.130.16 -p 10022
dockerfile方式添加sshd服务:
[root@master ~]# mkdir sshd_ubuntu
[root@master ~]# cd sshd_ubuntu
[root@master ~]# vim run.sh
#!/bin/bash
/usr/sbin/sshd -D
[root@master ~]# ssh-keygen -t rsa
[root@master ~]# cat ~/.ssh/id_rsa.pub > authorized_keys
[root@master ~]# vim Dockerfile
FROM ubuntu:18.04
LABEL maintainer (user@docker.com)
RUN echo "deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& echo "deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse" >>/etc/apt/sources.list.d/163.list \
&& apt-get update && apt-get -y install openssh-server
RUN mkdir -p /var/run/sshd && mkdir /root/.ssh/
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
ADD run.sh /run.sh
ADD authorized_keys /root/.ssh/authorized_keys
RUN chmod 755 /run.sh
EXPOSE 20
CMD ["/run.sh"]
[root@master ~]# docker build -t sshd:dockerfile .
[root@master ~]# docker run -d -p 10022:20 sshd:dockerfile
[root@master ~]# ssh 192.168.16.30 -p 10022
遇到的问题:
文件内容无法写入,一般有两种情况:1、权限不够,普通用户用vi 进行不了保存,也有可能是设置了特殊权限 2、有程序正在使用该文件
但是root怎么可能不够权限,基本可以排除1,出于2的考虑进入该目录才发现中间的目录名称输入错误.....