JetBrains製品でSSH接続時に秘密鍵が利用できない場合の一時対処法


この記事はmacOS 10.14(Mojave)以上、Xcode 10.1、PhpStorm 2018.3.3を利用した環境で書いています。

(JetBrains製品の2019.2以降でこの問題は解決されています。(2019年10月4日更新))

はじめましての投稿です、こんにちは。
最近MacBook Proを買い換えてウキウキしながら開発したりしてます。

新しいPCは新しい環境に全部リセットしてイチから環境構築しようと思い、新規にインストールしたり、色々設定し直したりしていたところ、掲題の問題に当たったので共有します。

何が起きたか

手元の環境でssh-keygenで生成した秘密鍵が、PhpStorm(2018.3.3)上では鍵のフォーマットが正しく無いと言われて使用できず、IDE上から開発環境へ接続できなくなりました。

結論

先に結論を書くと、接続に使用するキーペア生成時に-m PEMオプションを指定して生成し、そのキーペアを使用する。

ssh-keygen -t rsa -b 2048 -m PEM

何故できなかったのか

OpenSSH 7.8以降で、鍵ファイルを生成する際、デフォルトでOpenSSH形式の鍵ファイルが生成されるようになったようです。

【OpenSSH 7.8】秘密鍵を生成する形式が変更になった件について | DevelopersIO

どういうことか

これまで、ssh-keygenコマンドで公開鍵/秘密鍵を生成すする場合、デフォルトはPEMフォーマットで出力されていました。
鍵ファイルの見た目としては下記の様になります。

~/.ssh/id_rsa.pem
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----

これが、

~/.ssh/id_rsa
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----

というフォーマットになっており、このフォーマットには掲題製品は現時点(2019/01/28 現在)では未対応のようで、正しく認識されないようです。

この問題については既にIssuesにも上がっていて、今後対応される可能性もあります。
Support OpenSSH format private keys : PY-33521

今後のアップデートで対応されることを願います:)
2019.2.3 現在ではこの問題は対応されました。(2019年10月4日現在)

問題を確認した環境

私が今回の問題に当たったときの環境は macOS 10.14 (Mojave)Xcode 10.1 を利用していました。
Xcode 10.1のCommand Line ToolsではOpenSSH 7.9となっており、キーペア生成時にオプションを指定せずデフォルトで生成すると、この問題に当たりました。

% ssh -V
OpenSSH_7.9p1, LibreSSL 2.7.3

謝辞

この問題に当たってた所、Twitter上@yusuke さん上記Issuesを教えていただきました。ありがとうございました。