Azure VM や AWS EC2 に SSH 接続してコマンド上でファイル操作するのは大変じゃないですか? Vim に慣れていないとコマンドを検索するだけで時間がかかってしまいます。そんなときは MS が提供している Remote Development
拡張機能を使いましょう!
インストール
vscode の拡張機能から Remote Development
をインストールします。
SSH 接続用の Remote - SSH
や、 Container 接続用の Remote - Containers
も一緒にインストールされます。
使い方
公式ドキュメントの Developing on Remote Machines using SSH and Visual Studio Code を見るのが一番よいのですが、ざっくりと簡単に説明します。
前提条件
SSH Config (~/.ssh/config) に接続情報を設定します。
Windows は PowerShell を管理者で開いて SSH Agent
をインストール&起動してください。 SSH Key にパスフレーズがついている場合、これがないと動きません。
# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent
使い方
左側の Remote-SSH を開きます。接続情報の一覧が表示されます。
接続先をクリックします。接続が完了すると左下に接続しているホスト名が表示されます。※画像は Remote Development
の readme.md からの引用です。
ファイルエクスプローラからフォルダを開いて、あとは煮るなり焼くなり自由にファイル操作してください。
QA (使ってて困ったこと)
Q1. root ユーザーなどに切り替えができないけどどうしたらよい?
A1. SSH 接続したあとに vscode の terminal を開いて、 terminal からコマンドを打ってください。 cp コマンドなどでファイルを自分の作業フォルダに持ってくれば、 vscode でファイル編集できます。
Issue Changing User on Remote Machine · Issue #690 · microsoft/vscode-remote-release · GitHub に上がっているので、そのうち RemoteCommand を SSH Config の設定にかけるようになって terminal からの作業が減ると思います。
Q2. 踏み台がある場合はどうしたらよい?
A2. こんな感じで SSH Config を書いてあげれば接続できます。気をつける点は ProxyJump ではなく ProxyCommand を使うことと、 Windows の場合は ssh.exe をこんな感じできちんとパスで書いてあげる (ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -q -W %h:%p jump-box
) ことです。
Host jump-box
HostName <jump box address>
IdentityFile ~/.ssh/jump-box
User <user>
Host target-machine
HostName <same address as tagret-machine>
IdentityFile ~/.ssh/target-machine
User <user>
ProxyCommand ssh -q -W %h:%p jump-box