この記事は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フォーマットで出力されていました。
鍵ファイルの見た目としては下記の様になります。
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
これが、
-----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を教えていただきました。ありがとうございました。