我需要对我的 Dockerfile 进行哪些更改才能以 ssh 用户身份运行 sshd 服务器?
FROM alpine:3.15.4
RUN apk add --upgrade --no-cache openssh=8.8_p1-r1 \
&& \
rm -rf /var/cache/apk/*
RUN addgroup -S jumper && adduser -S jumper -G jumper
COPY entrypoint.sh /entrypoint.sh
RUN chown -R jumper:jumper /etc/ssh
USER jumper
ENTRYPOINT ["sh", "/entrypoint.sh"]
CMD ["/usr/sbin/sshd", "-D"]
目前我在启动容器时收到错误消息“/etc/ssh/sshd_config:权限被拒绝”。
配置文件被复制到我的入口脚本中。
#!/bin/sh
if [ -f /config/sshd_config ]; then
cp /config/sshd_config /etc/ssh/sshd_config
fi
ssh-keygen -A
exec "$@"
OpenSSH 可能可以工作(请参阅此问题),但运行非 root SSH 服务器的更直接方法是使用 dropbear。由于缺少权限而受到各种限制,特别是:
这是一个简单的 Dockerfile 示例。运行映像时,您必须将用户 SSH 公钥作为环境变量传递
USER_SSH_PUBLIC_KEY
。
FROM ubuntu
RUN apt-get update && \
apt-get install -y --no-install-recommends dropbear openssh-sftp-server && \
apt-get clean
ARG USER_NAME=myuser
ARG USER_ID=1111
ARG GROUP_NAME=$USER_NAME
ARG GROUP_ID=$USER_ID
ARG HOME=/home/$USER_NAME
RUN groupadd --gid $GROUP_ID $GROUP_NAME && \
useradd --uid $USER_ID --gid $GROUP_ID --create-home --shell /bin/bash --no-log-init $USER_NAME
USER $USER_NAME
WORKDIR $HOME
RUN mkdir -p ./.ssh && \
chmod 700 ./.ssh && \
touch ./.ssh/authorized_keys && \
chmod 600 ./.ssh/authorized_keys && \
dropbearkey -t rsa -f ./dropbear_rsa_host_key
EXPOSE 2222
CMD echo "$USER_SSH_PUBLIC_KEY" > $HOME/.ssh/authorized_keys && \
exec dropbear -E -F -w -g -s -j -k -p 2222 -P ./dropbearPID -r ./dropbear_rsa_host_key