我们不仅需要使用本机ssh连接系统,还需要使用php和其他程序进行连接
当尝试使用php脚本(函数ssh2_connect)从启用Fips的CentOS6盒连接到启用Fips的CentOS7盒时,它失败,并显示错误消息:
PHP Warning: ssh2_connect(): Error starting up SSH connection(-5): Unable to exchange encryption keys ...
我们尝试连接的系统上的安全日志显示:
Mar 27 12:59:27 localhost sshd[3574]: Unable to negotiate with <IP> port 58530: no matching key exchange method found. Their offer: diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 [preauth]
我们知道FIPS会限制使用已弃用的连接方法,例如diffie-hellmann-sha1。
当我们尝试从CentOS7到CentOS7的相同连接时,它将起作用。
我们假设启用了FIPS的CentOS6在SSH和SSL的工作方式上仍然与CentOS7不同(配置文件相同,PHP版本和安装相同,openssh libssh2 openssl是相同版本)
我们还尝试过让ssh_config(基于主机)中的旧KEX失败,并将其添加到sshd_config(ssh的旧版项目)中只会完全断开ssh连接。
CentOS6: Installed packages related to ssl and ssh
libssh2.x86_64 1.4.2-2.el6_7.1
libssh2-devel.x86_64 1.4.2-2.el6_7.1
openssh.x86_64 5.3p1-122.el6
openssh-clients.x86_64 5.3p1-122.el6
openssh-server.x86_64 5.3p1-122.el6
mod_ssl.x86_64 1:2.2.15-69.el6.centos
openssl.i686 1.0.1e-57.el6
openssl.x86_64 1.0.1e-57.el6
openssl-devel.x86_64 1.0.1e-57.el6
openssl098e.i686 0.9.8e-20.el6.centos.1
openssl098e.x86_64 0.9.8e-20.el6.centos.1
CentSO7: Installed packages related to ssl and ssh
libssh2.i686 1.4.3-10.el7_2.1
libssh2.x86_64 1.8.0-8.0.cf.rhel7
openssh.x86_64 7.4p1-16.el7
openssh-clients.x86_64 7.4p1-16.el7
openssh-server.x86_64 7.4p1-16.el7
mod_ssl.x86_64 1:2.4.6-80.el7.centos.1
openssl.x86_64 1:1.0.2k-12.el7
openssl-devel.i686 1:1.0.2k-12.el7
openssl-devel.x86_64 1:1.0.2k-12.el7
openssl-libs.i686 1:1.0.2k-12.el7
openssl-libs.x86_64 1:1.0.2k-12.el7
有人遇到同样的问题吗?我们将受影响的系统更新为CentOS7,但这将是一项巨大的工作,因此,我尝试找到一个临时解决方案,以在启用了Fips时使CentOS6与CentOS7进行通信。
有一种方法可以强制CentOS6中的所有ssh连接使用更新的方法,因为我认为FIPS模式可以解决这一问题。