设置用户的密码:
echo "username:encryptedPassWd" | chpasswd -e
但是这个密码不能是明文的,得是加密后的,有两个办法:
- 登陆到容器内部运行
passwd root
,然后到/etc/shadow
文件中查看设置成功的文本 - 通过命令
openssl passwd -6 -salt xyz yourpass
生成一个
最后在 Dockerfile 文件中:
RUN echo 'root:$y$j9T$2Ou6ckVGzuRvYZX9RyykO0$6hSs539X09Xdt4wSqKuD4hfcoU1NRT4vzmMm7EinKT4' | chpasswd -e
下一步修改允许 root 用户通过 ssh 登陆:
my_sshd.conf:
PermitRootLogin yes
Dockerfile:
COPY etc/my_sshd.conf /etc/ssh/sshd_config.d
此时可以进入容器中测试一下:
ssh-keygen -t rsa
ssh-copy-id hostname
ssh hostname
上面这一步也可以写到 dockerfile 中:
COPY etc/my_ssh.conf /etc/ssh/ssh_config.d/
COPY ssh/* /root/.ssh/
总共分三步:
- 首先 ssh 这个目录下包含 3 个文件 id_rsa id_rsa.pub authorized_keys,其中公钥和私钥都是宿主机上生成的,相当于每个容器都使用同一组的密钥。
- authorized_keys 是用于保存连接者的公钥的,但由于大家都是一样的,所以把 id_rsa.pub 复制进去即可。
- my_ssh.conf 文件内就一句话
StrictHostKeyChecking no
,等于弃用 authorized_keys 安全机制,这样首次连接时就不会在命令行中询问。
网友评论