无法通过AWS Session Manager运行的SSH连接

时间:2019-08-07 09:09:30

标签: amazon-web-services aws-systems-manager aws-session-manager

我在要复制文件的专用子网中有一个EC2实例。

我要使用here中记录并于here上宣布的通过会话管理器使用安全文件复制,而不是S3存储桶。

正在运行的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 个答案:

答案 0 :(得分:5)

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

确保至少具有以下版本,然后它才能正常工作。

本地

  • aws cli:aws-cli / 1.16.213 Python / 3.7.2 Darwin / 18.7.0 botocore / 1.12.203
    • aws --version
  • session-manager-plugin:1.1.26.0
    • session-manager-plugin --version

目标ec2实例

  • amazon-ssm-agent:2.3.687.0
    • 对于AmazonLinux yum info amazon-ssm-agent | grep "^Version"

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