使用JMeter连接SFTP服务器时出现“Algorithm negotiation fail”错误求助
解决JMeter SSH SFTP "Algorithm negotiation fail" 错误
问题原因
这个错误出现在JMeter的SSH客户端库(默认是JSch)与SFTP服务器支持的加密、密钥交换等算法不匹配时。WinSCP支持的算法范围更广,所以能正常连接,而JMeter默认配置没有覆盖服务器要求的算法集合。
解决方案
1. 确认服务器支持的算法
- 如果有服务器操作权限,用命令行查看允许的算法:
ssh -Q kex <你的主机名> # 查看密钥交换算法列表 ssh -Q cipher <你的主机名> # 查看加密算法列表 ssh -Q key <你的主机名> # 查看密钥算法列表
- 没有服务器权限的话,打开WinSCP的会话日志,在连接过程里找服务器返回的算法协商信息,提取出支持的算法。
2. 修改JMeter SSH配置
找到JMeter安装目录下的bin/user.properties文件,添加以下配置(替换成你实际查到的服务器支持算法):
# 密钥交换算法 ssh.kex=curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 # 加密算法 ssh.cipher=chacha20-poly1305@openssh.com,aes128-ctr,aes256-ctr,aes128-gcm@openssh.com # 主机密钥算法 ssh.hostkey=ssh-ed25519,ecdsa-sha2-nistp256,rsa-sha2-256
保存文件后重启JMeter,再尝试连接。
3. 更新JMeter的SSH库(可选)
如果配置修改后仍无效,可能是JMeter自带的JSch版本过旧,不支持新算法。下载最新版JSch jar包,替换JMeter安装目录lib/下的旧JSch文件,重启JMeter即可。
4. 验证私钥格式
确保私钥是标准OpenSSH格式(.key/.pem),如果是PuTTY的ppk格式,用WinSCP导出为OpenSSH格式。同时私钥文件权限要设置为仅当前用户可读(Linux设为600,Windows限制其他用户访问),避免权限问题导致的连接失败。
内容的提问来源于stack exchange,提问作者JMeter_User
相关产品推荐
相关产品推荐

