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

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください