如何使EC2 Instance Connect端口转发适配Sublime远程文件编辑?
问题描述
我在远程主机安装了rmate,通过远程端口转发用Sublime编辑AWS EC2实例上的文件。此前使用标准SSH(身份文件认证)时,在.ssh/config中添加以下配置,该方案稳定运行多年:
RemoteForward 52698 localhost:52698
尝试改用EC2 Instance Connect时,执行了如下命令:
aws ec2-instance-connect ssh --instance-id i-xxxxxxx --os-user foo --profile dev --local-forwarding 52698:localhost:52698
连接可正常建立(使用AWS SSO配置的profile),但在远程实例执行rsubl foo.py时出现报错:
$ rsubl foo.py /usr/local/bin/rsubl: connect: Connection refused /usr/local/bin/rsubl: line 412: /dev/tcp/localhost/52698: Connection refused Unable to connect to TextMate on localhost:52698
解决方法
问题核心是端口转发方向搞反了:
- 标准SSH中的
RemoteForward是远程端口转发,作用是将远程EC2实例的52698端口请求,转发到本地机器的52698端口(对应本地Sublime服务) - 你使用的
--local-forwarding是本地端口转发,方向完全相反,它是把本地端口的请求转发到远程实例,不符合当前需求
只需将参数替换为远程端口转发的--remote-forwarding,修改后的命令如下:
aws ec2-instance-connect ssh --instance-id i-xxxxxxx --os-user foo --profile dev --remote-forwarding 52698:localhost:52698
重新建立连接后,在远程实例执行rsubl foo.py即可正常连接本地Sublime服务,实现文件编辑。
内容的提问来源于stack exchange,提问作者pjw
相关产品推荐
相关产品推荐

