17
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-01-28

この記事は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上から開発環境へ接続できなくなりました。
現象発生時のSFTP接続設定画面

結論

先に結論を書くと、接続に使用するキーペア生成時に-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を教えていただきました。ありがとうございました。

17
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?