【问题标题】:How to connect to Node Container app via SSH?如何通过 SSH 连接到 Node Container 应用程序?
【发布时间】:2021-05-22 20:52:20
【问题描述】:

使用 docker 运行节点应用程序我无法在 Azure 门户中通过 SSH 访问它。我添加了一个 ssh 配置文件,并且正在使用 apk add openssh。该应用程序运行良好,无需添加添加 SSH 的命令。不知道如何让它正常工作。拒绝 azure 连接

FROM node:14-alpine as builder
WORKDIR /app/

COPY package.json yarn.lock /app/

RUN yarn

ADD . .

RUN yarn build

FROM node:14-alpine as runner
WORKDIR /app/
ENV NODE_ENV=production

COPY --from=builder /app/build /app/
COPY --from=builder /app/package.json /app/yarn.lock /app/
COPY src/database/prisma/schema.prisma /app/prisma/

RUN yarn

COPY docker/sshd_config /etc/ssh/
RUN mkdir /var/run/sshd
RUN apk add openssh && echo "root:MyP@ssword1" | chpasswd

#EXPOSE 8080
#CMD node web_server/index.js
EXPOSE 8080 2222
CMD /usr/sbin/sshd &; node web_server/index.js

【问题讨论】:

  • 你在本地试过吗?可以公开 2222 而不是 ssh 默认端口 22 吗?
  • 是的,根据 azure docs 2222 应该可以工作 docs.microsoft.com/en-us/azure/app-service/…
  • 它运行在什么服务上?虚拟机、ACI 还是其他?
  • 它在 azure 应用服务中运行

标签: node.js azure docker ssh


【解决方案1】:

如果您的应用运行良好,请尝试添加以下内容:

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

在您的 Dockerfile 中,尝试添加以下命令:

# ssh
COPY docker/sshd_config /etc/ssh/
RUN mkdir /var/run/sshd
RUN apk add openssh && echo "root:MyP@ssword1" | chpasswd

COPY sshd_config /etc/ssh/
COPY init.sh /usr/local/bin/

EXPOSE 8080 2222
CMD ["bash","init.sh"]

在项目的根文件夹中添加init.sh

#!/bin/bash
set -e
echo "Starting SSH ..."
service ssh start
node web_server/index.js

或者,将您的最后一个代码更改为CMD ["/usr/sbin/sshd","-D", "node web_server/index.js"]

有关更多参考,请参阅here1here2

【讨论】:

  • 这有效,但现在我得到 SSH CONNECTION CLOSE - 错误:所有配置的身份验证方法失败错误:当我尝试和 ssh 时
  • 最终使用了这个 --> COPY docker/sshd_config /etc/ssh/ RUN mkdir /var/run/sshd RUN apk add openssh && echo "root:myPassword1" | chpasswd COPY init.sh /usr/local/bin/ EXPOSE 8080 2222 RUN /usr/bin/ssh-keygen -A CMD /usr/sbin/sshd & node web_server/index.js
猜你喜欢
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2022-01-08
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多