4

我正在尝试 ssh 进入 Azure 应用服务的容器。我已按照说明在此处配置我的容器:

https://docs.microsoft.com/en-gb/azure/app-service/containers/configure-custom-container#enable-ssh

以及此处的连接说明:

https://docs.microsoft.com/en-gb/azure/app-service/containers/app-service-linux-ssh-support

以下是我的 docker 文件中的相关步骤:

RUN apt-get update \ 
     && apt-get install -y --no-install-recommends dialog \
     && apt-get update \
     && apt-get install -y --no-install-recommends openssh-server \
     && echo "root:Docker!" | chpasswd 

EXPOSE 8000 2222

COPY sshd_config /etc/ssh/

CMD ./bin/start.sh

start.sh 在哪里开始运行 service ssh start。sshd_config 文件是

# This is ssh server systemwide configuration file.
#
# /etc/sshd_config

Port            2222
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 连接时,它首先会说,"CONNECTED | CREDENTIALS"然后在 30 秒左右后会说"SSH CONNECTION CLOSE - Error: connect ECONNREFUSED <ip>:2222"

不知道为什么这没有连接?

4

2 回答 2

1

解决我的错误的是指定 sshd 需要的缺少的运行时目录。对于 debian Linux distor,我必须创建/run/sshd目录。另一件重要的事情是sshd对我来说完全启动守护进程/usr/sbin/sshd

Dockerfile

FROM nginx:latest

RUN apt-get update && apt-get install -y ssh
RUN echo "root:Docker!" | chpasswd
RUN mkdir /run/sshd

WORKDIR /app
COPY startup.sh /app
COPY sshd_config /etc/ssh/

EXPOSE 80 2222

CMD /app/startup.sh

/app/startup.sh

#!/bin/sh

echo "Start sshd"
/usr/sbin/sshd

echo "Start nginx"
nginx -g "daemon off;"

sshd_config

Port                2222
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 进入容器,请运行此命令

# Password: Docker!
$ ssh root@IP_OF_CONTAINER -p 2222

# Debug
ssh root@172.17.0.26 -p 2222 -vvvv
于 2021-04-13T13:08:02.357 回答
0

好的,刚刚让它工作,似乎把 #!/bin/bash 放在 start.sh 的顶部

于 2020-05-26T09:24:43.813 回答