You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fabric2在AWS EC2嵌套SSH本地2022端口抛出paramiko认证异常

问题排查与修复方案

首先可以排除EC2网络阻断的可能:如果是EC2安全组、网络ACL层面阻断了连接,你会收到Connection refused、Connection timed out类报错,不会抛出AuthenticationException认证失败异常,该错误是身份凭证不匹配或者目标服务异常导致的。

常见原因

  • 代码账号配置错误:你手动执行的SSH命令使用的用户名是admin,但代码中目标连接的用户名配置为dummy_user,账号不匹配直接导致认证失败。
  • 端口转发未配置:你本地运行时大概率提前配置了本地端口转发,将本地2022端口的流量通过Node1转发到了目标主机,但运行代码的EC2上没有做相同的端口转发配置,代码中访问的localhost:2022实际指向的是Node1本身的2022端口,对应服务和你本地转发的目标服务不一致,自然认证失败。
  • 私钥文件权限异常:SSH要求私钥文件权限必须为600(仅所有者可读),如果上传到EC2的.pem文件权限过高,会被SSH服务拒绝加载,导致第一步连接Node1就认证失败。
  • 安全组白名单缺失:运行代码的EC2公网IP没有加入Node1安全组22端口的入站允许列表,也可能抛出认证类异常。

修复步骤

  1. 修正代码中的账号配置:将目标连接的user='dummy_user'改为你手动测试用的admin,确认密码参数和你手动输入的密码一致。
  2. 补充端口转发配置:在运行代码的EC2上提前执行端口转发命令 ssh -L 2022:目标主机IP:22 root_user@A.B.C.D -i example.pem,或者直接修改代码中的目标连接地址为实际的目标主机IP,无需走localhost转发。
  3. 修正私钥文件权限:在EC2上执行命令 chmod 600 example.pem,保证私钥文件权限符合SSH要求。
  4. 调整安全组规则:将运行代码的EC2公网IP加入Node1安全组入站规则的22端口允许列表。
  5. 手动验证链路:在运行代码的EC2上先手动SSH登录Node1,再在Node1会话中执行ssh admin@localhost -p 2022验证是否可以正常登录,排除环境配置问题后再运行代码。

内容的提问来源于stack exchange,提问作者kusamit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 20:06:08