新しいSFTPサーバに、古いopensshからssh2_connect時にエラー発生(Unable to exchange encryption keys)

新しいUbuntu20のSFTPサーバを設定した後、超古いopensshの環境からPHPで、ファイルをアップロードしようとしたところ、下のエラーが出ました。

Warning (2): ssh2_connect(): Error starting up SSH connection(-5): Unable to exchange encryption keys

クライアント(超古いopenssh)からリクエストされたKexAlgorithmsの中に、新しいUbuntuのsshでサポートしているKexAlgorithmsが無いからエラー。という風に理解しました。

正しい対応方法としては、クライアント(超古いopenssh)をアップグレードすることな訳だけど、そう簡単ではない事もあって、汚ない解決方法を取らないといけないこともある。

ということで推奨されない方法だろうけど、新しいサーバの方で古いKexAlgorithmsを追加してあげることで、SFTPアップロードができるようにしました。セキュリティ的に問題がある解決策なので、参考にする場合は自己責任でおねがいします。

  • /etc/ssh/sshd_config
KexAlgorithms +diffie-hellman-group1-sha1

再起動

sudo systemctl restart sshd.service

ssh2_connectのエラーが回避できました。 セキュリティ的に問題がある解決策なので、参考にする場合は自己責任でおねがいします。

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.