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

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

## 環境

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

## PyCharm の設定は ?

![image.png](https://qiita-image-store.s3.amazonaws.com/0/209900/a95f5b8c-2767-56c6-4930-c1128f6c5557.png)

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 を置いてみる

```shell:.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 レポジトリは、このような名前です:

```
git@github.com-piwikjapan:piwikjapan/kusanagi-vagrant.git
```

### PyCharm から github に push すると Bad owner or permissions on ...
![push_failed.png](https://qiita-image-store.s3.amazonaws.com/0/209900/c5ae2ceb-516a-dfff-1d0a-fab27467bab7.png)

* 別の 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 という謎の画面が

![push_failed3.png](https://qiita-image-store.s3.amazonaws.com/0/209900/db027427-0b86-c231-859a-4a677f80d6e0.png)

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

![push_failed2.png](https://qiita-image-store.s3.amazonaws.com/0/209900/359bf9d2-0f9a-77fa-e3ea-8759f62bb76b.png)

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 可能となりました。