新しいSFTPサーバに、古いopensshからssh2_connect時にエラー発生(Unable to exchange encryption keys)
2021/10/07
新しい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のエラーが回避できました。 セキュリティ的に問題がある解決策なので、参考にする場合は自己責任でおねがいします。