SFTP连接AWS测试环境卡在“SSH2_MSG_KEXINIT sent”阶段求助
SFTP连接AWS测试环境卡在“SSH2_MSG_KEXINIT sent”阶段求助
看起来你遇到的是AWS SFTP测试环境在密钥交换阶段连接重置的问题,而且dev环境正常,这说明大概率是测试环境的配置或者网络层面的差异导致的,我给你梳理几个针对性的排查方向:
检查测试环境SFTP服务器的密钥交换算法支持
你使用的是OpenSSH 7.4,不同AWS SFTP环境可能配置的密钥交换(KEX)算法范围不一样。可以尝试在连接命令中指定兼容的KEX算法,比如:sftp -v -i <private_key_file> -o KexAlgorithms=diffie-hellman-group-exchange-sha256 <client>@<hostname>另外,你可以对比dev环境成功连接的debug日志,找到dev阶段使用的KEX算法,然后在测试环境的连接命令中指定相同的算法,看是否能解决问题。
再次验证测试环境的公钥配置
虽然你提到已经更换了对应公钥,但还是要仔细核对几个细节:- 用
ssh-keygen -y -f <private_key_file>生成本地私钥对应的公钥,和AWS测试环境中给<client>用户配置的公钥完全对比,确保没有多余的空格、换行或者字符错误。 - 确认AWS控制台中公钥的格式是否正确:必须以
ssh-rsa开头,后面跟着密钥内容,末尾的备注(如果有)不影响,但前面的核心部分必须一致。
- 用
排查测试环境的安全组与网络ACL配置
既然dev环境能正常连接,说明本地到AWS的基础网络是通的,但测试环境的安全组或网络ACL可能有差异:- 检查测试环境SFTP服务器所属的安全组,入站规则是否允许你本地服务器的公网IP访问22端口;
- 对应的网络ACL要确保双向都允许22端口的流量(入站允许本地IP到22,出站允许22端口的返回流量),网络ACL是默认拒绝所有的,所以不要漏掉出站规则。
排除本地SSH配置的干扰
尝试跳过本地的SSH配置文件,直接发起连接,看看是不是本地配置的限制导致的:sftp -v -i <private_key_file> -F /dev/null <client>@<hostname>同时可以检查
/etc/ssh/ssh_config中有没有针对测试环境hostname的特殊配置条目,比如限制了KEX算法或加密套件。查看AWS SFTP测试环境的CloudWatch日志
登录AWS控制台,找到测试环境的SFTP服务器,查看关联的CloudWatch日志组,里面会记录连接失败的具体原因——比如密钥验证失败、算法不兼容、用户权限不足等,这是定位问题最直接的方式。
备注:内容来源于stack exchange,提问作者Norealname
相关产品推荐
相关产品推荐

