windows環境の「visual studio code」から「Remote SSH」でサーバーにつなぐためのtips
最短距離の結論:
1. sshで繋げるサーバーを用意(前提としてssh鍵認証で繋ぐとする)
2. C:\Users\[ユーザー名]\.ssh\[鍵名] にsshの鍵を配置する。
3. C:\Users\[ユーザー名]\.ssh\config にsshの設定を記載する。
(接続先portや2.で記載した鍵の場所等)
# ssh config の例
Host [エイリアス名]
HostName [IPアドレス、ホスト名等]
User [ユーザー名]
Port [ポート番号、特に設定してなければデフォルト22]
IdentityFile C:\Users\[ユーザー名]\.ssh\[鍵名]
4. visual studio code から 「Remote ssh : connect to host」を選択し、上記で記載したエイリアス名が読み込まれていることを確認のうえ、接続
苦しんだポイント
1. WSLをインストールしており、デフォルトのターミナルをWSLにしていたため、Remote sshもWSL経由のsshで繋ぎに行くと勘違いしており、WSL内のほうの.ssh/config等をひたすら編集してまったく接続できなかった。
Remote sshのログを見るとWSLを起動しようとして失敗しており、結果としてsystem32配下のcmd.exeをsshクライアントして使っていたようだ。
この辺、どうやらバグがあるようで下記で議論されている。
https://github.com/microsoft/vscode-remote-release/issues/937
結果としてWSL等に惑わされず、素直にwindowsの記法に従って記載すればよい。鍵の場所の指定では C:\Users\[ユーザー名]\.ssh\[鍵名] のようにWindows上のパスとして指定すること。
2. Identityファイルはユーザードキュメント配下(C:\Users\[ユーザー名])におかないと
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for '_key_name_' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "_key_name_": bad permissions
_username_@_IP_: Permission denied (publickey).
と怒られる。linux脳だと、「おっと失礼、chmodしますわー」ってなるが、windowsだからchmodできないし、caclsコマンドなんて使ったことないから詰んでるやん。。。と思わされたが、ファイルの配置場所を変更することでうまく動作した。
ファイルの置き場所でパーミッションが変わるってN年単位で繰り返しはまっている気がする。。。来週にはもうこの知識忘れそうだから備忘として記載する。