###環境
・Windows10 1909
・OpenSSH_for_Windows_7.7p1, LibreSSL 2.6.5
・PhpStorm 2020.2
##はじめに
ローカルファイルをサーバ環境に適用するのに、PhpStomでは
適用対象のファイルを開いた状態で Ctrl+Alt+Shift+X または
Alt+9でGitのペインへ移動し、適用したいコミットログを選択して、Tools>Deployment>UploadTo で
ファイルを適用できるので、とても便利です。
で、この適用先が多段接続の場合、接続テストの段階で
と怒られて、うまく接続できなかったので、それを解決したよという話。
##結論
Windowsのsshで正しく接続できるのなら、PhpStormでも接続できる。はまったのはGitBashで接続できているのに↑のエラーが出ていたから。
##設定方法
configの設定
~/.sshのconfigに
Host bastion
Hostname XXX.XXX.XXX.XXX
User ec2-user
IdentityFile ~/.ssh/foo.pem
Host destination
Hostname YYY.YYY.YYY.YYY
User ec2-user
IdentityFile ~/.ssh/foo.pem
ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p bastion
のように設定します。
ここでGitBashで接続できるのにウインドウズではできなかったこと。
・鍵を~/.ssh/ではなくて、フルオープンのフォルダに置く
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'D:/XXXX/foo.pem' are too open.
このように言われてしまいます。
・ C:\Windows\System32\OpenSSH\ssh.exe
の箇所をssh
と書く
>ssh destination
CreateProcessW failed error:2
posix_spawn: No such file or directory
こうなってしまいます。
sshはフルパスで記載し、鍵はアクセス制限のあるフォルダに置きます。
こうして正しくconfigを記載し >ssh destination
で接続できれば、Phpstomでも以下の設定で接続できるようになります。
###PhpStormの設定
Ctrl+Alt+Sで設定ファイルを開き、Tools>SSHConfigurations
Hostにconfigで指定した名前を設定し
Authentication TypeとしてOpenSSH config and authentication agentを選択します。
次に、Build,Execution,Deplyoment>Deployment に移動し
SSH Configurationに上で指定した設定を選択します。
あとは、Root Path等の設定をします。
こちらに良記事があります。
これで、簡単にデプロイできるようになりました。
##その他
configの設定で、OpenSSH7.3から使用できるようになったProxyJump
を下記のように使用しようとすると
Host destination
Hostname YYY.YYY.YYY.YYY
User ec2-user
IdentityFile ~/.ssh/foo.pem
ProxyJump bastion
OpenSSH_for_Windows_7.7p1 では接続できませんでした。
OpenSSH_for_Windows_8.1p1を入れたところ、このバージョンでは接続できました。
こちらも参考にしました。