无法通过 AWS Session Manager 工作获得 SSH 连接

Posted

技术标签:

【中文标题】无法通过 AWS Session Manager 工作获得 SSH 连接【英文标题】:Can't get SSH connections through AWS Session Manager working 【发布时间】:2019-12-14 21:06:55 【问题描述】:

我在私有子网中有一个 EC2 实例,我想在其中复制文件。

我想通过会话管理器使用安全文件复制而不是 S3 存储桶,如 here 中所述并在 here 上宣布。

一个正在运行的 EC2 实例附加了一个包含策略 AmazonEC2RoleforSSM 的实例配置文件。在我的本地计算机 (macOS 10.14.5) 上安装了 AWS CLI (aws-cli/1.16.195) 和会话管理器插件 (1.1.26.0),并相应地配置了 .ssh/config

我可以使用 Web AWS 控制台上的会话管理器登录实例。

我可以使用带有aws ssm start-session --target i-XXX 的CLI 登录到实例。

我无法使用 SSH 登录实例。我尝试了 2 个不同的 OpenSSH 客户端版本:

OpenSSH_7.9p1:

当我运行ssh ec2-user@i-XXX 时,它会无限挂起。但是我可以在会话管理器中看到一个connected 会话。当我 SIGTERM 进程时,我得到以下输出并且会话终止:

Command '['session-manager-plugin', '"SessionId": "XXX", "TokenValue": "XXX", "StreamUrl": "wss://ssmmessages.eu-central-1.amazonaws.com/v1/data-channel/XXX?role=publish_subscribe", "ResponseMetadata": "RetryAttempts": 0, "HTTPStatusCode": 200, "RequestId": "XXX", "HTTPHeaders": "x-amzn-requestid": "XXX", "date": "Wed, 07 Aug 2019 08:47:23 GMT", "content-length": "579", "content-type": "application/x-amz-json-1.1"', 'eu-central-1', 'StartSession', u'cc', '"DocumentName": "AWS-StartSSHSession", "Target": "i-XXX", "Parameters": "portNumber": ["22"]', u'https://ssm.eu-central-1.amazonaws.com']' returned non-zero exit status -13

OpenSSH_8.0p1:

当我运行ssh ec2-user@i-XXX 时出现以下错误,需要在会话管理器中手动终止会话:

kex_exchange_identification: banner line contains invalid characters

【问题讨论】:

【参考方案1】:

我刚刚从 AWS Support 获得了答复,它现在对我有用。以下组件之一存在错误。

确保至少遵循以下版本,然后它应该可以工作。

本地

aws cli:aws-cli/1.16.213 Python/3.7.2 Darwin/18.7.0 botocore/1.12.203 aws --version 会话管理器插件:1.1.26.0 session-manager-plugin --version

目标 ec2 实例

亚马逊-ssm-代理:2.3.687.0 对于 AmazonLinux yum info amazon-ssm-agent | grep "^Version"

我还创建了一个简洁的 SSH ProxyCommand 脚本,该脚本在连接到目标实例期间临时将您的公共 ssh 密钥添加到目标实例。

AWS SSM SSH 代理命令 -> https://gist.github.com/qoomon/fcf2c85194c55aee34b78ddcaa9e83a1

【讨论】:

以上是关于无法通过 AWS Session Manager 工作获得 SSH 连接的主要内容,如果未能解决你的问题,请参考以下文章

ListAssociation 的 AWS Session Manager 异常

如何使用 session-manager-plugin 命令

无法使用 Secrets Manager 密钥注册 AWS Batch 作业定义

AWS Certificate Manager,无法获取子域的 https

如何限制 AWS IAM 组访问 AWS Secret Manager?

如何建立 AWs Systems Manager PortForwarding 会话?未知会话类型端口