docker容器加密访问的方法

一、危害说明

宿主主机上能够操作docker的账号拥有很大的权限,具有如下两个明显安全隐患

1.可以随意进入宿主上的任意容器中

因为进出容器不可以加密,所以有docker权限的账号可以操控宿主机上全部容器中的系统和数据。

2.可以通过挂载目录的方式,来访问本身无权访问的目录

比如当前账号为dev。

如果有个属主非dev的文件目录例如(/home/dev1/test),访问权为700。

dev账号可以使用如下命令启动一个容器,并将上述目录挂载入容器。

docker run -it -d -v /home/dev1/test:/work -w /work ubuntu:20.04 bash

此时进入容器后,会发现test目录下的内容已经全部可以访问。

解决方案

可行的办法就是把开发使用的账号和拥有docker权限的账号分开,然后开发账号通过ssh的方式登录容器环境,这样可以控制账号对不同容器的访问权。

二、容器安装ssh

进入容器中

1.直接安装ssh

apt-get update
apt-get install openssh-server -y

如果安装ssh报如下错误:

E: Sub-process /usr/bin/dpkg returned an error code (1)

则执行下面步骤

cd /var/lib/dpkg
mv info info.baksudo
mkdir info

然后再重新安装

2.配置ssh

启动ssh

echo PermitRootLogin yes >> /etc/ssh/sshd_config
/etc/init.d/ssh restart

三、容器root账号设置密码

在容器中设置root账号

passwd

四、登录容器

在宿主主机中操作

1.找到对应容器的ip地址

docker ps #找到容器id
docker inspect [containerID] #查找容器的ip地址

找到其中NetworkSettings>Networks>IPAddress,例如为172.17.0.2

2.登录

ssh [email protected]

 如果重启了容器宿主之间的登陆记录会报错,禁止登陆,提示如下

 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

找到其中ssh-keygen -f****行,执行删除历史记录,然后再重新登陆。

五、注意

如果容器停止不了,执行下面代码

su root
aa-remove-unknown

你可能感兴趣的:(docker,docker,容器,运维)