You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动