前言
之前做了个 OpenWrt 编译环境的 Docker 镜像,为了使用上更方便打算加上 ssh 功能,这样可以直接连接到容器进行编译操作,就不需要连接到宿主机再输入命令进入容器了。在添加openssh-server
安装指令与sshd
启动指令后,容器无法运行。
错误日志
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
问题分析
由于编译 OpenWrt 需要使用普通用户,所以我把容器的启动用户设置为了普通用户,但是由于普通用户没有权限去执行sshd
启动指令,所以导致了这个问题。
解决方案
编辑 Dockerfile ,在启动命令前加上sudo
。
CMD [ "sudo", "/usr/sbin/sshd", "-D"]
不过先决条件是必须要安装sudo
并赋予普通用户sudo
权限。就像下面这样:
RUN apt install -y sudo && \
echo 'user ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/user && \
chmod 440 /etc/sudoers.d/user
本文作者:P3TERX
本文链接:https://p3terx.com/archives/problems-and-solutions-encountered-in-docker-use.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。非商业转载及引用请注明出处(作者、原文链接),商业转载请联系作者获得授权。