我正在尝试根据以下条件在本地 PC 和 AWS EC2 之间设置端口转发AWS SSM 端口转发文章 例如:
aws ssm start-session --target i-0822c9a6c52ca7394 \
--document-name AWS-StartPortForwardingSession --parameters \
'{"portNumber":["55555"],"localPortNumber":["6666"]}'
我已经使用 SSM 来访问实例(使用ssm 会话),并使用它开始python -m SimpleHTTPServer 55555
监听端口。
我从 SSM 获得的输出如下:
开始会话,会话 ID 为:jakub.holy@481473109573-0dd8f51cc06ef4469
(并且,经过很长一段时间后: SessionId:jakub.holy@481473109573-0dd8f51cc06ef4469:由于不活动,您的会话超时并已终止。 - 我仍然需要
kill
它。)
此时程序挂起了。我本以为会在“Startin session...”之后出现以下内容,但是我没有看到:
端口 6666 已为 sessionId 开放....
会话已接受连接.....
知道为什么它挂起并且没有建立端口转发吗?
答案1
我从一位同事那里得到了这个建议:
您可能需要在 EC2 实例上更新 ssm-agent,然后才能使用端口转发功能。当代理不支持端口转发时,会话将挂起且没有错误消息,或者以消息“会话超时”结束。
(我正在使用内置于 Amazon Linux 2 实例中的代理,其版本号为 v. 2.3.662,而最新版本是 2.3.760。)
答案2
确保您可以写入用于会话管理器日志记录的存储桶(如果有),并确保您还授予 EC2 该操作s3:GetBucketEncryption
。请参阅这里了解更多信息
答案3
如果本地端口已在使用中,则会出现此行为。您可以通过启动两个具有相同配置的隧道来复制此行为,第二个隧道将停留在那里,因为端口已在使用中。