首页 > 解决方案 > 尝试分配环境变量以包含 docker images public ssh key

问题描述

我需要容器自己的公钥位于容器映像中的环境变量中,以便在启动映像时变量 AUTHORIZED_KEYS 已经填充了它。

我尝试将变量 AUTHORIZED_KEYS 分配给 Dockerfile 中的公钥,但是当我启动容器并查看正在运行的容器中的所有环境变量时查看它时,它是空的。我确实看到我的测试变量 ERNIE 被正确填充。 

这是我到目前为止不起作用的 Dockerfile -

FROM alpine:latest

ARG SSH_PUBLIC_KEY

# ssh-keygen -A generates all necessary host keys (rsa, dsa, ecdsa, ed25519) at default location.
RUN    apk update \
    && apk add openssh \
    && apk add openssh-server-pam \
    && mkdir /root/.ssh \
    && chmod 0700 /root/.ssh \
    && ssh-keygen -A \
    && sed -i s/^#PasswordAuthentication\ yes/PasswordAuthentication\ no/ /etc/ssh/sshd_config \
    && sed -i s/^#UsePAM\ no/UsePAM\ yes/ /etc/ssh/sshd_config \
    && sed -i s/root:!/"root:*"/g /etc/shadow \
    && ssh-keygen -f ~/.ssh/id_rsa -N "" -q \
    && SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)" 
    #&& AUTHORIZED_KEYS="$(cat ~/.ssh/id_rsa.pub)"
RUN cat /etc/ssh/sshd_config

# This image expects AUTHORIZED_KEYS environment variable to contain your ssh public key.

EXPOSE 22

ENV ERNIE="hellooo there ernie"
ENV AUTHORIZED_KEYS=$SSH_PUBLIC_KEY

标签: dockerssh

解决方案


推荐阅读