无法通过 ssh 连接到 Azure 应用服务上的 Linux 容器 - "SSH CONNECTION CLOSE - Error: connect ECONNREFUSED"



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

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

以及此处的连接说明:

https://learn.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 启动的位置运行服务 SSH 启动。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"

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

修复我的错误的是指定了 sshd 所需的缺少运行时目录。对于 debian Linux 发行版,我必须创建/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

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

最新更新