python通過ssh連接linux服務器,部分服務器出現如下異常
03:50:48.725 FAIL ftp operation failed, Incompatible ssh peer (no acceptable kex algorithm)
原因是Python使用的ssh插件,加密算法與遠端服務器的加密算法不匹配。
Linux服務端ssh的加密算法配置在 etc/ssh/sshd_config文件中,最后一行
KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
可將最后一行算法修改為正常環境的配置值 (不推薦這種方式)
另一種處理方式是修改Python的調用方式。有兩種方式獲取ssh鏈接。
1.基於ssh
這種方式 ssh基於SSH-1.8.0插件,部分老用例使用了這個插件,需要自己實現ssh鏈接操作。 這個插件2012年10月之后沒有再更新,所以對於新的算法支持不了。
2.基於paramiko
自動化框架基於paramiko插件實現, paramiko插件較新,可以支持新的算法。
取用paramiko最新版本,問題解決。 注意paramiko插件依賴ecdsa與pycrypto兩個插件。
python插件下載網址: https://pypi.org/