Amazon web services 是否可以SSH到FARGATE托管的容器实例中?

Amazon web services 是否可以SSH到FARGATE托管的容器实例中?,amazon-web-services,ssh,aws-fargate,Amazon Web Services,Ssh,Aws Fargate,我通常按照以下步骤连接到EC2容器实例,不知道如何才能连接到FARGATE托管的容器实例。在github上看到这个问题,我认为不可能让docker exec从远程主机进入ECS FARGATE上的容器。您可以尝试使用systemd()在一个容器中运行ssh守护程序和主进程,并使用ssh连接到您的容器,但在容器世界中这通常不是一个好主意。这是可能的,但并不容易。请直截了当地说。 简而言之:安装SSH,不从VPC公开SSH端口,添加bastion主机,通过bastion进行SSH 再详细一点: 使

我通常按照以下步骤连接到EC2容器实例,不知道如何才能连接到FARGATE托管的容器实例。

在github上看到这个问题,我认为不可能让docker exec从远程主机进入ECS FARGATE上的容器。您可以尝试使用systemd()在一个容器中运行ssh守护程序和主进程,并使用ssh连接到您的容器,但在容器世界中这通常不是一个好主意。

这是可能的,但并不容易。请直截了当地说。 简而言之:安装SSH,不从VPC公开SSH端口,添加bastion主机,通过bastion进行SSH

再详细一点:

  • 使用无密码身份验证启动SSHD
  • Fargate任务:暴露端口22
  • 配置您的专有网络
  • 创建EC2堡垒主机
  • 从那里SSH到任务的IP地址

下面是一个将SSH/sshd添加到容器以获得直接访问的示例:

# Dockerfile
FROM alpine:latest

RUN apk update && apk add --virtual --no-cache \
  openssh

COPY sshd_config /etc/ssh/sshd_config

RUN mkdir -p /root/.ssh/
COPY authorized-keys/*.pub /root/.ssh/authorized_keys
RUN cat /root/.ssh/authorized-keys/*.pub > /root/.ssh/authorized_keys
RUN chown -R root:root /root/.ssh && chmod -R 600 /root/.ssh

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
RUN ln -s /usr/local/bin/docker-entrypoint.sh /

# We have to set a password to be let in for root - MAKE THIS STRONG.
RUN echo 'root:THEPASSWORDYOUCREATED' | chpasswd

EXPOSE 22
ENTRYPOINT ["docker-entrypoint.sh"]
#docker-entrypoint.sh
#!/垃圾箱/垃圾箱
如果[“$SSH_ENABLED”=true];然后
如果[!-f”/etc/ssh/ssh_主机_rsa_密钥”];然后
#生成新的rsa密钥
ssh-keygen-f/etc/ssh/ssh\u主机\u rsa\u密钥-N''-t rsa
fi
如果[!-f”/etc/ssh/ssh_host_dsa_key”];然后
#生成新的dsa密钥
ssh-keygen-f/etc/ssh/ssh\u主机\u dsa\u密钥-N''-t dsa
fi
#准备运行目录
如果[!-d”/var/run/sshd“];然后
mkdir-p/var/run/sshd
fi
/usr/sbin/sshd
env | grep'| PATH'| awk'{print“export”$0}'>>/root/.profile
fi
执行官“$@”

此处有更多详细信息:

从2021年3月中旬开始,当容器在AWS Fargate中运行时,可以在ECS容器中执行命令,请检查

快速检查列表:

  • 在服务中启用命令执行
  • 确保在服务中使用最新的平台版本
  • 向任务执行角色添加
    ssmmessages:…
    权限
  • 强制服务的新部署在启用命令执行的情况下运行任务

  • 这应该允许运行
    /bin/bash
    命令,并将交互式shell放入在AWS Fargate上运行的容器中。我在上面提到的文章中已经清楚地解释了这一切。

    谢谢!我要试试这个:(好吧,如果你需要在dev中调试一些东西,在它进入prod之前,这不是一个好主意或坏主意)我可以确认,是的,通过运行sshd并正确配置安全组,您可以SSH到Fargate容器中。@bluescores-有没有可能详细说明您的解决方案?您只需要启用SSH或mod-one的docker映像。如何修改取决于初始图像中的内容。请记住,您可以在容器中运行任何内容,而SSHD只是另一种服务。在容器中运行一件事是使用它们的一种方法,但不一定是正确的或唯一的方法,它只是适合CI/Devops环境的它们的一个特定用例。看看lxc/lxd、freebsd监狱或solaris区域。它们都是容器,但设置得更像完整的机器,即多个进程、服务、用户帐户等。这有帮助吗?如果Web服务器的端口映射已映射到80,该怎么办?很有趣,我会尽快检查的