SQL Developer 17.4.1配置SSH代理SQL连接时遇算法协商失败求助
解决SQL Developer 17.4.1 SSH连接CentOS7的Algorithm negotiation fail错误
这个Algorithm negotiation fail错误我太熟了——本质就是你用的SQL Developer 17.4.1内置的JSch库,和CentOS 7 SSH服务端支持的加密/密钥交换算法不兼容,两边谈不拢就报错了。给你几个实用的解决办法,按优先级来:
方法1:修改CentOS7的SSH服务端配置(最直接)
这是最常用的解决方案,通过让服务器兼容旧算法来匹配SQL Developer的JSch库:
- 用编辑器打开SSH配置文件:
sudo vi /etc/ssh/sshd_config - 在文件末尾添加以下配置(这些都是旧JSch库支持的算法集):
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc MACs hmac-md5,hmac-sha1,hmac-sha2-256,hmac-sha2-512 - 保存退出后,先检查配置语法是否正确:
sudo sshd -t(没报错就继续) - 重启SSH服务:
sudo systemctl restart sshd - 现在回到SQL Developer测试SSH连接,大概率能成功。
方法2:升级SQL Developer版本(最省心)
SQL Developer 17.4.1是2018年的老版本了,后续Oracle更新了内置的JSch库,对现代SSH算法支持更好。如果你的环境允许,直接升级到最新稳定版(比如23.x系列),很多兼容性问题会自动消失,不用折腾服务器配置。
方法3:手动替换SQL Developer的JSch库(进阶操作)
如果不想升级整个软件,可以单独替换内置的JSch jar包:
- 找到SQL Developer安装目录下的
jsch.jar,一般在sqldeveloper/lib/或者sqldeveloper/ide/lib/路径里 - 下载支持Java 8的最新JSch jar包(因为17.4.1依赖Java 8)
- 替换掉原来的jar包,重启SQL Developer后再测试连接
注意事项
- 修改
sshd_config后一定要用sshd -t检查语法,避免配置错误导致无法远程登录服务器 - 这个错误和防火墙/SELinux无关,不用纠结端口开放问题,重点在算法匹配
内容的提问来源于stack exchange,提问作者StarKev2525




