IntelliJのSetting Repositoryで"invalid privatekey"エラーが表示される → JSchが対応している秘密鍵のフォーマットはPEM
IntelliJ / PyCharmでローカルの設定をGitHubなどと共有しようとしたときに、"invalid privatekey" と表示されて困ったことはないですか?
OpenSSH7.8以降で出力される秘密鍵のヘッダーは以下のフォーマットになっているようです。私の場合は ed25519
ではなく RSA
でしたが、以下のフォーマットで出力されました。
-----BEGIN OPENSSH PRIVATE KEY-----
このフォーマットが JSchに対応していない、ということのようです。
StackOverFlowの助言に従い、 -m PEM
オプションを付けて ssh-keygenからやり直したら解決しました。
解説
IntelliJのログ(私の場合、~/Library/Logs/JetBrains/IdeaIC2020.1/idea.log
)からスタックトレースを表示しました。
Caused by: com.jcraft.jsch.JSchException: invalid privatekey: [B@282a5626 at com.jcraft.jsch.KeyPair.load(KeyPair.java:664) at com.jcraft.jsch.KeyPair.load(KeyPair.java:561) at com.jcraft.jsch.IdentityFile.newInstance(IdentityFile.java:40) at com.jcraft.jsch.JSch.addIdentity(JSch.java:406) at com.jcraft.jsch.JSch.addIdentity(JSch.java:366) at org.eclipse.jgit.transport.JschConfigSessionFactory.getJSch(JschConfigSessionFactory.java:396) at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:332) at org.eclipse.jgit.transport.JschConfigSessionFactory.createSession(JschConfigSessionFactory.java:205) at org.eclipse.jgit.transport.JschConfigSessionFactory.getSession(JschConfigSessionFactory.java:138) ... 39 more
JSchが原因だと思っていたわけでなく、 invalid privatekey で検索したら一番上に表示されたというだけです。 よく検索されているのかもしれませんね。
余談ですが、ここにたどり着くまでにIntelliJを再起動したり再インストールしたりで無駄な時間を過ごしてしまいました。 エディタの実行ログはいつでも表示できるようにして、まずはログを見たいですね。