PyCharm (JetBrains) で複数の private key を github で使う


目的達成のために .ssh/config を使いたい

環境

  • Windows 10
  • PyCharm Professional 2018.3
  • git コマンドは cygwin のものを使用

PyCharm の設定は ?

File->Settings->Git で Path to Get executable を cygwin の git.exe に、SSH executable を Native にする。ここで、どこの git を実行するかは設定できるけど Native がどこの ssh.exe を呼び出すかがわからないので、どこに .ssh/config を置けばいいのかもわからない。

ssh.exe がどこにあるのか調べる

試しにコマンドプロンプトから ssh.exe がどこにあるのか、.ssh ディレクトリをどこに置いたらいいのか推測つけてみる。

C:\Users\yamachan>where ssh
C:\Windows\System32\OpenSSH\ssh.exe
C:\Users\yamachan>set HOMEPATH
HOMEPATH=\Users\yamachan

C:\Windows\System32\OpenSSH\ssh.exe であれば、たぶん \$HOMEPATH/.ssh を読みに行くはず(ディレクトリからして Windows 付属の OpenSSH みたいなので)。そして、たぶん PyCharm もコマンドプロンプトと同じ PATH で ssh.exe を実行(すなわち C:\Windows\System32\OpenSSH\ssh.exe)し、 \$HOMEPATH/.ssh を読みに行くはず。

$HOMEPATH の下に .ssh/config を置いてみる

.ssh/config
Host github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa
Host github.com-piwikjapan
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa-piwikjapan

ドメインが github.com-piwikjapan だったら、id_rsa-piwikjapan という秘密鍵に切り替えられます。実際実験した git レポジトリは、このような名前です:

[email protected]:piwikjapan/kusanagi-vagrant.git

PyCharm から github に push すると Bad owner or permissions on ...

  • 別の ID で作ったので、ID わかるところだけ白塗りにした

上記 .ssh/config を設定し PyCharm から github.com-piwikjapan を使って、pull なり push なりすると右下にペロっと表示が出ます。この Bad owner or permissions を誰が出しているか、ですが、試しにコマンドプロンプトから適当な Linux に ssh ログインしてみます:

C:\Users\yamachan>ssh 10.233.3.35
Bad owner or permissions on C:\\Users\\yamachan/.ssh/config

同じメッセージです... つまり PyCharm からも C:\Windows\System32\OpenSSH\ssh.exe を使っていることがわかり、喪目論見通り .ssh/config を読み込みにいっているようです(いままで ssh 10.233.3.35 としても Bad owner or permissions なんて出なかった)。
結局わかったのが cygwin 環境で .ssh/config を作り、\$HOMEPATH(C:\Users\yamachan)に cygwin の cp コマンドでコピーしたのがまずかったようです。cygwin 環境の .ssh/config から、\$HOMEPATH へのコピーを explorer で行うと Bad owner or permissions はでなくなりました。

次は SSH Keyboard Interactive という謎の画面が

Bad owner or permissions がなくなったけど、github.com-piwikjapan に push しようとすると、お次は SSH Keyboard Interactive という小窓がでてきて何やら入力しろといわれます、無視して OK をクリックすると:

Host key verification failed と右下にペロっと表示されよります。Host key verification とあるので、もしやと思い、コマンドプロンプトから:

C:\Users\yamachan>ssh github.com-piwikjapan
The authenticity of host 'github.com (192.30.255.112)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.112' (RSA) to the list of known hosts.
PTY allocation request failed on channel 0
Hi piwikjapan! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

C:\Users\yamachan>

.ssh/known_hosts がなかったんですね。ここまできて、github.com-piwikjapan でも push 可能となりました。