SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

LinuxサーバーなどのリモートマシンにSSHで接続してファイルを編集したい場合、ターミナル画面上でvi(vim)で編集するのが一般的ですが、viは操作方法がが特殊なため使い慣れていないと編集しづらく感じることがあります。

かといって、編集したいファイルを毎回わざわざローカルにダウンロードして、テキストエディターで編集してアップロードするのは面倒です。

そこでここでは、SSH接続したリモートマシン上のファイルをローカルマシン上の使い慣れたテキストエディターで直接編集する方法を紹介します。

なお、ここではリモートマシンはLinux、ローカルマシンはWindows、テキストエディターはVisual Studio Codeを想定しています。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
Windows 10 Pro 64bit22H2

WinSCP経由で編集する

リモートマシンにSSH接続してファイル転送するときのWindows向けの定番ツール「WinSCP」では、SSH接続したリモートマシン上のファイルをWinSCP内臓のテキストエディタや任意のテキストエディターで直接編集することができます。

WinSCPの入手は、以下の公式サイトからどうぞ。(WinSCPのインストール方法や、リモートマシンへSSH接続する設定方法は、ここでは割愛します。)

WinSCPとは :: WinSCP

WinSCPでリモートマシンのファイルを外部テキストエディターで直接編集する手順は、次のとおりです。

WinSCPを起動して接続画面左下の「ツール」から「環境設定」を選択します。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

環境設定画面が表示されるので、画面左側のメニューから「エディタ」を選択して、画面右側の「追加」をクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

「エディタの追加」画面が表示されるので「外部エディタ」を選択して、その下の「参照」ボタンをクリックして、利用したいテキストエディターの実行ファイルを指定し「OK」をクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

環境設定画面に戻るので「エディタの設定」欄で追加したエディターを一番上に移動させてから「OK」をクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

以上で、WinSCPでSSH接続したリモートマシン上のテキストファイルをダブルクリックすれば、設定したテキストエディターが開いて直接編集できるようになっているはずです。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

VSCodeからSSH接続して編集する

コードエディターとして人気のある「Visual Studio Code(以下、VSCode)」なら、拡張機能をインストールすることで、リモートマシンにSSH接続して、リモートマシン上のファイルを直接編集できます。

VSCodeの入手は、以下の公式サイトからどうぞ。(VSCodeのインストール方法や、基本的な使い方についてはここでは割愛します。)

Download Visual Studio Code - Mac, Linux, Windows

VSCodeからリモートマシンにSSH接続して、リモートマシン上のファイルを直接編集する手順は、次のとおりです。

VSCodeを起動して、画面左側のメニューから「拡張機能」ボタンをクリックし、拡張機能の画面で検索ボックスに「SSH FS」と入力します。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

検索ボックス下に候補が表示されるので「SSH FS」の「インストール」ボタンをクリックし、拡張機能をインストールします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

インストールが完了したら、画面左側のメニューから「SSH FS」ボタンをクリックして、SSH FSの画面で「Configurations」から「Open settings and edit configurations」ボタンをクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

「Configurations」画面が表示されるので「Add」ボタンをクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

新しい接続先の作成画面が表示されるので「Name」欄にわかりやすい接続先の名前を入力して「Save」ボタンをクリックします。(なお、名前に日本語は使用できません)

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

接続先の情報を入力する画面が表示されるので、以下の項目を入力し画面下部の「Save」ボタンをクリックします。

  • Host:接続先のIPアドレス
  • Port:接続ポート
  • Root:ログイン時のディレクトリ
  • Username:ログインユーザー名
  • Password:パスワード認証の場合は、パスワードを入力
  • Private key:鍵認証でログインする場合は、秘密鍵を指定

一般ユーザーでログイン後に自動的にrootに昇格したいときは、以下の情報も入力します。(なお、SFTP Commandに入力するパスは、SSHサーバーの環境により異なり、以下はAlama Linux9の場合の入力例です。)

  • SFTP Command:/usr/libexec/openssh/sftp-server
  • SFTP Sudo:Default

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

接続先を追加したら、SSH FSの画面の「Configurations」欄から、接続先の横に表示される「Add as Workspace folder」ボタンをクリックすることで、SSH接続が開始されます。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

正常にSSH接続できれば「エクスプローラー」のワークスペースに接続先のディレクトリが一覧表示され、ファイルを選択すれば直接編集できます。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

接続を終了するときは、SSH FSの画面の「Connections」欄から、終了する接続先の横にある「Disconnect」ボタンをクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

ファイル監視はオフに

VSCodeからリモートマシンにSSH接続してファイル編集を行っていると、VSCodeのファイル監視機能が原因でリモートマシンに負荷をかけてしまう場合があるので、VSCodeのファイル監視は無効に設定しておくとよいでしょう。

手順は、次のとおりです。

VSCodeの「ファイル」メニューから「ユーザー設定」>「設定」を順に選択します。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

設定画面が表示されるので「設定の検索」欄に「Watcher Exclude」と入力して、Watcher Excludeの設定項目の「パターン追加」をクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

除外パターンに「**」と入力して「OK」をクリックします。

SSH接続したリモートマシン上のファイルをローカルのテキストエディターで直接編集する方法

最後に、設定を反映させるためにVSCodeを再起動します。

以上で、ファイル監視機能がオフが無効になり、リモートマシンに余計な負荷が掛かることはなくなるでしょう。

なお、ファイル監視機能をオフにすると、gitのファイル変更状況がリアルタイムで反映されなくなるので、自身でコミットなどをするときに、手動で「最新の情報に更新」して、変更があったファイルを確認する必要があります。

あとがき

普段Windowsマシンで作業することが多いと、たまにリモートのLinux環境にSSH接続してviでファイル編集するのがとても煩わしく感じますが、ここで紹介した方法で使い慣れたテキストエディターで編集できるようにしておけば、そのような煩わしさも軽減できるでしょう。