Visual Studio Code の Remote SSH で Linux 上のファイルを直接編集する
ここでは Windows 上で動作する Visual Studio Code で Linux 上のファイルを編集するようにします。
ここでは ubuntu 22.04.2 を使います。
同様の記事はいっぱいあると思いますが、自分でやってみた記録として残します。
- (2023/9/19) RSA鍵を使っていたのを ED25519に変更
- (2023/9/19) スクリーンショットのIPアドレスが192.168.14.27 と 192.168.14.56 が混ざっていますが、もともとRSA鍵をベースに作成したものを ED25519に変更する際、スクリーンショットの再取得を行ったため、リモート側のIPアドレスが変わったためなので、同じものと読み替えてください。
参考
この記事で扱うこと
- (Linux 側) SSH に接続できる設定
- (Windows 側) ED25519 秘密鍵/公開鍵の生成方法
- (Windows 側 → Linux側) 生成した ED25519 公開鍵をLinuxサーバーへ転送
- (Linux 側) ED25519 公開鍵で Linuxサーバーにログインできるようにする設定
- (Windows 側)
Visual Studio Code
のSSH Remote プラグイン
のインストール - (Windows 側)
Visual Studio Code
のSSH Remote プラグイン
の設定 (ED25519 の秘密鍵の場所を設定) - (Windows 側)
Visual Studio Code
のSSH Remote プラグイン
の設定 (接続先のLinuxサーバーを追加) - (Windows 側)
Visual Studio Code
のSSH Remote プラグイン
を使っての編集
この記事で扱わないこと
- SSH って何?
- Visual Studio Code って何?
- Visual Studio Code のインストール方法
- Linux のインストール方法
- TeraTerm のインストール方法
準備作業
- TeraTerm をインストールします。
- 接続先の Linux を用意します。
- Visual Studio Code をインストールします。
(Linux 側) SSH に接続できる設定
https://qiita.com/m-tmatma/items/9a562863ca99ca6c0d1c を参考に以下コマンドを実行してSSH を有効化する。
sudo apt install -y openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
(Windows 側) ED25519 秘密鍵/公開鍵の生成方法
SSH鍵生成
Tera Term を起動して、メニューから SSH鍵生成
を選ぶ
鍵の種類
が ED25519
になっていることを確認して 生成
を選ぶ
必要に応じて、コメント
欄に後でわかるようにコメントを書く
公開鍵の保存
公開鍵の保存
を押す。
この際、保存先を指定する必要がありますが、通常は %USERPROFILE%\.ssh
のフォルダを指定します。
%USERPROFILE%
というのは C:\Users\自分のユーザー名
のことです。
このディレクトリが存在しない場合は、以下コマンドで作っておきます。
mkdir %USERPROFILE%\.ssh
ディレクトリを作成したら、そのディレクトリを指定します。ファイル名はデフォルトの id_ed25519.pub
のまま 保存
を押します。
秘密鍵の保存
-
秘密鍵の保存
を押します。 - このとき、以下のダイアログが出ますが、ここでは
はい
を押して、パスフレーズを空としておきます。
- 公開鍵の保存のところで、
%USERPROFILE%\.ssh
を指定したので、その場所が選択されています。 - ファイル名はデフォルトの
id_ed25519
のまま、保存
を押します。 -
閉じる
ボタンを押して閉じます。
重要 (セキュリティに関する注意)
秘密鍵は、非常に重要な情報なので、これが漏れないようにする必要があります。
これはパスワードと同様な情報なのでこれが漏れると、Linux サーバーに自由にログインできてしまうので厳重に管理する必要があります。
(Windows 側 → Linux側) 生成した ED25519 公開鍵をLinuxサーバーへ転送
ED25519 公開鍵をLinuxサーバーへ転送
- Tera Term を使って、Linux サーバーに ユーザー名、パスワードを使用してログインします。
- 生成したED25519 公開鍵が保存されているフォルダをエクスプローラで開きます。
-
id_ed25519.pub
(=ED25519 公開鍵) を Tera Term のウィンドウにドラッグアンドドロップします。id_ed25519 のほうではありません。 -
SCP
にチェックが入った状態のままOK
を押します。
ED25519 公開鍵が Linux に転送されたか確認
Tera Term のコンソール上で ls
を実行すると id_ed25519.pub
が転送されているのを確認できます。
間違えて、id_ed25519
の方を転送しないようにする必要があります。(この記事を書いているときに間違えました)
(Linux 側) ED25519 公開鍵で Linuxサーバーにログインできるようにする設定
転送した ED25519 の公開鍵を使って、ログインできるための設定を行います。
https://m-tmatma.github.io/ssh/auto_login.html を参考に、転送した公開鍵を配置します。
mkdir -p ~/.ssh
cat id_ed25519.pub >> .ssh/authorized_keys
rm id_ed25519.pub
chmod 755 ~
chmod 700 ~/.ssh
この手順で id_ed25519.pub
は不要になるので削除しています。
(Windows 側) 設定した公開鍵で Linux にログインできるのを確認
- サーバーに接続したときに表示される
SSH認証
ダイアログが表示されます。 -
RSA/DSA/ECDSA/ED25519鍵を使う
にチェックを付けたままにします。 -
秘密鍵
に秘密鍵のファイルパスを指定します。ここではid_ed25519
のほうを指定します。
- パスワードなしでログインできるのを確認できます。
(Windows 側) Visual Studio Code
の SSH Remote プラグイン
をインストール
(Windows 側) Visual Studio Code
の SSH Remote プラグイン
の設定 (ED25519 の秘密鍵の場所を設定)
- リモート接続用のアイコンをクリックします。
-
SSH TARGETS
あたりにマウスを移動すると、隠れているアイコンが表示されるので、設定アイコンをクリックします。
- 設定ファイルのパスが選択肢に出てくるので自分のユーザー用の設定を選択します。白色の塗りつぶしで隠している部分です。
- Visual Studio Code で ssh の設定ファイルを編集する画面になります。
以下のような内容です。
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
HostName hostname
User user
これに、IdentityFile
の設定を追加して、保存します。
以下のような感じ
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
Host alias
HostName hostname
User user
IdentityFile C:\Users\winuser\.ssh\id_ed25519
2020/12/29 更新 IdentityFile
に秘密鍵ではなく、公開鍵を指定していたのを修正
(Windows 側) Visual Studio Code
の SSH Remote プラグイン
の設定 (接続先のLinuxサーバーを追加)
-
SSH TARGETS
あたりにマウスを移動して、+
ボタンを押します。
-
ユーザー名@linuxサーバー名
の形式で、指定して、ENTER
キーを押します。
- 設定ファイルの選択画面になるので、自分のユーザーに対応する設定ファイルの場所を選びます。
- サーバーの項目が追加されます。
(Windows 側) Visual Studio Code
の SSH Remote プラグイン
の設定 (接続先のLinuxサーバーを追加)
-
+
アイコンを選択すると、別ウィンドウが開いて、OS を確認する画面になるのでLinux
を選択してENTER
を押します。(うまくスクリーンショットが取れなかったので、スクリーンショットは省略)。ここをスキップするとうまく繋がりません。一番最初の接続は、裏でサーバー側のセットアップをするので、時間がかかります。
- 別の
Visual Studio Code
のウィンドウが開きます。
特に変わったことがないように見えますが、ファイル
メニューからフォルダを開く
を選ぶと、以下のようにパスの部分が/home/user
となっており、直接 Linux サーバー上のファイルシステムを開けるようになっています。
- OK を押すと、
192.168.11.56
のフォルダを直接参照できています。
- 試しに
ファイル
メニューから新規ファイル
を選んで、ファイルを保存してみます。
- 別で開いている Tera Term のウィンドウで
ls -l
をしてみると、ファイルが作成されており、編集した内容と一致しているのを確認できます。
別ウィンドウの Visual Studio Code でサーバーのファイルを開きましたが、同一ウィンドウで開くこともできます。