【问题标题】:SSH into Azure web-app container running with non root userSSH 进入以非 root 用户运行的 Azure Web 应用容器
【发布时间】:2021-04-07 00:47:18
【问题描述】:

我正在使用 Azure Web 应用容器服务的容器中运行 Elastic 和 Kibana 服务。我热衷于使用 Azures Web SSH 控制台功能检查此容器的 SSH 连接。按照 SSH 的 microsoft 文档进入自定义容器 https://docs.microsoft.com/en-us/azure/app-service/configure-custom-container?pivots=container-linux#enable-ssh,其中显示了以默认 root 用户身份运行容器的示例。

我的问题是 Elasticsearch 进程没有以 root 用户身份运行,因此我不得不让 sshd 进程以弹性用户身份运行。我能够让sshd 进程运行,该进程接受来自我的主机的 SSH 连接,但是我在 docker 文件(elasticsearch:Docker!)中设置的凭据正在抛出 Access Denied 错误。知道我在哪里出错了吗?

Dockerfile

FROM openjdk:jre-alpine

ARG ek_version=6.5.4

RUN apk add --quiet --no-progress --no-cache nodejs wget \
 && adduser -D elasticsearch \
 && apk add openssh \
 && echo "elasticsearch:Docker!" | chpasswd
 
# Copy the sshd_config file to the /etc/ssh/ directory

COPY startup.sh /home/elasticsearch/
RUN chmod +x /home/elasticsearch/startup.sh && \
    chown elasticsearch /home/elasticsearch/startup.sh

COPY sshd_config /home/elasticsearch/

USER elasticsearch

WORKDIR /home/elasticsearch

ENV ES_TMPDIR=/home/elasticsearch/elasticsearch.tmp ES_DATADIR=/home/elasticsearch/elasticsearch/data

RUN wget -q -O - https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-${ek_version}.tar.gz \
 |  tar -zx \
 && mv elasticsearch-${ek_version} elasticsearch \
 && mkdir -p ${ES_TMPDIR} ${ES_DATADIR} \
 && wget -q -O - https://artifacts.elastic.co/downloads/kibana/kibana-oss-${ek_version}-linux-x86_64.tar.gz \
 |  tar -zx \
 && mv kibana-${ek_version}-linux-x86_64 kibana \
 && rm -f kibana/node/bin/node kibana/node/bin/npm \
 && ln -s $(which node) kibana/node/bin/node \
 && ln -s $(which npm) kibana/node/bin/npm

EXPOSE 9200 5601 2222

ENTRYPOINT ["/home/elasticsearch/startup.sh"]

startup.sh 脚本

#!/bin/sh

# Generating hostkey 
ssh-keygen -f /home/elasticsearch/ssh_host_rsa_key -N '' -t rsa

# starting sshd process
echo "Starting SSHD"
/usr/sbin/sshd -f sshd_config

# Staring the ES stack
echo "Starting ES"
sh elasticsearch/bin/elasticsearch -E http.host=0.0.0.0 & kibana/bin/kibana --host 0.0.0.0

sshd_config 文件

Port            2222
HostKey /home/elasticsearch/ssh_host_rsa_key
PidFile /home/elasticsearch/sshd.pid
ListenAddress       0.0.0.0
LoginGraceTime      180
X11Forwarding       yes
Ciphers aes128-cbc,3des-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr
MACs hmac-sha1,hmac-sha1-96
StrictModes         yes
SyslogFacility      DAEMON
PasswordAuthentication  yes
PermitEmptyPasswords    no
PermitRootLogin     yes
Subsystem sftp internal-sftp

我得到的错误

【问题讨论】:

  • 你在哪里 ssh 到容器?

标签: docker elasticsearch ssh azure-web-app-service


【解决方案1】:

请检查并确认您的 docker 镜像支持 SSH。看来您已正确完成所有操作,因此剩下的最后一个故障排除步骤之一是验证您的映像是否支持 SSH。

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 2020-12-19
    • 2020-12-28
    • 1970-01-01
    • 2018-07-02
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多