是否可以通过SSH连接到FARGATE manged容器实例?

Ste*_*ina 19 ssh amazon-web-services aws-fargate

我按照以下步骤使用连接到EC2容器实例,https: //docs.aws.amazon.com/AmazonECS/latest/developerguide/instance-connect.html想知道如何连接到FARGATE管理的容器实例.

Jak*_*jny 16

在github上查看该问题https://github.com/aws/amazon-ecs-cli/issues/143我认为不可能将远程主机上的docker exec转换为ECS Fargate上的容器.您可以尝试使用例如systemd(https://docs.docker.com/config/containers/multi-service_container/)在一个容器中运行ssh守护程序和主进程,并使用SSH连接到您的容器,但通常不是一个好主意在容器世界.

  • 我可以确认,是的,您可以通过运行sshd并正确配置安全组来SSH到Fargate容器. (6认同)
  • 感谢那!我要试试这个:https://github.com/aws/amazon-ecs-cli/issues/143#issuecomment-414415329(好吧,如果你需要调试一些东西,这不是一个好主意还是一个坏主意在它开始生产之前在开发中) (3认同)
  • @bluescores-您能否详细说明您的解决方案? (3认同)
  • 您只需要一个启用了 ssh 或 mod one 的 docker 映像。根据初始图像中的内容,修改方式会有很大差异。请记住,您可以在容器中运行任何内容,而 SSHD 只是另一项服务。在容器中运行一件事是使用它们的一种方法,但这不一定是正确或唯一的方法,它只是它们适合 CI/Devops 环境的特定用例。看看lxc/lxd、freebsd Jails 或solaris 区域。它们都是容器,但设置看起来更像完整的机器,即多个进程、服务、用户帐户等。 (2认同)

tum*_*udu 13

启用服务上的执行命令。

aws ecs update-service --cluster <Cluster> --service <Service> --enable-execute-command
Run Code Online (Sandbox Code Playgroud)

连接到 Fargate 任务。

aws ecs execute-command --cluster <Cluster> \
    --task <taskId> \
    --container <ContainerName> \
    --interactive \
    --command "/bin/sh" 
Run Code Online (Sandbox Code Playgroud)

参考 - https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html


Арт*_*цын 11

这是可能的,但并不容易。直截了当。简而言之:安装 SSH,不要从 VPC 暴露 ssh 端口,添加堡垒主机,SSH 通过堡垒。

多一点细节:

  • 使用无密码身份验证启动 SSHD。码头工人说明
  • Fargate 任务:公开端口 22
  • 配置您的 VPC,说明
  • 创建 EC2 堡垒主机
  • 从那里通过 SSH 连接到您任务的 IP 地址


Vic*_*nov 8

从 2021 年 3 月中旬开始,当容器在 AWS Fargate 中运行时,可以在 ECS 容器中执行命令,请检查使用 Amazon ECS Exec 访问 AWS Fargate 和 Amazon EC2 上的容器

快速检查清单:

  1. 在服务中启用命令执行。
  2. 确保在服务中使用最新的平台版本。
  3. ssmmessages:..为任务执行角色添加权限。
  4. 强制服务的新部署在启用命令执行的情况下运行任务。

这应该允许运行/bin/bash命令并将交互式 shell 放入在 AWS Fargate 上运行的容器中。这一切在我上面引用的文章中都有清楚的解释。