ssh2_connect报错(-5):无法交换加密密钥,SFTP连接求助
SSH2连接SFTP报错:无法交换加密密钥
问题描述
使用PHP的ssh2_connect函数连接SFTP服务器时触发错误,代码如下:
$connection = ssh2_connect("myHost", 22);
报错信息:
ssh2_connect(): Error starting up SSH connection(-5): Unable to exchange encryption keys
解决方法
指定兼容的加密算法
服务器与本地ssh2扩展支持的加密算法不匹配是常见诱因,可以在连接时显式指定双方兼容的算法:$connection = ssh2_connect("myHost", 22, [ 'hostkey' => 'ssh-rsa', 'crypt' => ['aes256-cbc', 'aes128-cbc'] ]);具体可用算法可查看服务器
/etc/ssh/sshd_config中的Ciphers配置项,以及本地ssh2扩展支持的算法列表。更新相关依赖库
旧版本的ssh2扩展或OpenSSL库可能存在算法支持缺陷,尝试更新到最新稳定版本。检查服务器SSH配置
确认服务器未禁用必要的加密算法,同时验证SSH服务正常运行、22端口可正常访问。排查网络限制
防火墙、代理或VPN可能拦截SSH加密交换数据包,确保网络路径未限制SSH流量。
内容的提问来源于stack exchange,提问作者Piyush Shukla
相关产品推荐
相关产品推荐

