Visual Studio Code(以下VS Code)にはたくさんのExtentionがありますが、今回はRemote -SSHという拡張機能について紹介をしたいと思います。プログラミングはVS Code、サーバー側の設定ファイルの修正はターミナルソフトと使い分けている方も多いのではないでしょうか?どちらも同じプラットフォーム上でファイル操作・編集ができると便利ではないでしょうか?今回紹介するRemote -SSHというVS Codeの拡張機能はリモート環境下でも同じようにVS Codeを使って作業を可能にするものです。
今回はRemote -SSHの拡張機能とVirtual Box上にインストールしたCentOS8.3へ、この拡張機能を使った接続方法を紹介したいと思います。また、私の場合、初回はSSH接続ができなかったため、その原因と対策についても紹介します。
Remote -SSHとは
一言でいうと『リモート環境にSSH接続してVS Codeを使った作業を可能にする』拡張機能です。
インストール方法
上記の画面の矢印通りの手順を実行します。
- VS Codeの拡張機能(Extension)の検索欄に「Remote ssh」と入力する
- 検索結果に出てきたRemote - SSHを選択してインストールする
- VS Codeを再読み込みする
インストールが完了するとVS Codeの左下のアイコンからRemote - SSHを使えるようになります。
SSH接続をしてみる
早速SSH接続を実施してみたいと思います。
今回接続するにあたって前提とするのは以下です。
- 接続先はCentOS 8.3 (最小限のインストールで構築)
- ポートにはデフォルトの22番を使う
- サーバ側には「root」ユーザーで接続する
- パスワード認証を行う
接続手順
コマンドパレットから以下のように「Remote-SSH」と入力して「Remote-SSH:Connect to Host」を選択します。
新規に接続先を設定するため「+ Add New SSH Host」を選択します。
「ユーザーID@接続先」を入力します。
更新するSSH用の設定ファイルを選択します。
設定ファイルへの追記が反映すると「Host added!」が表示されます。「Connect」をクリックして接続を開始します。
今回はパスワード認証なので、パスワードを入力します。
接続失敗とその原因
接続を試みましたが、接続試行のまま接続に成功しませんでした。そのため、ログを確認して接続できない原因を確認し対応したいと思います。
ログを確認
ログは以下の通りです。しかしIP部分のみマスクしています。(XXX.XXX.XXX.XXXとYYY.YYY.YYY.YYY部分)
[16:47:03.131] Log Level: 2 [16:47:03.133] remote-ssh@0.65.4 [16:47:03.133] darwin x64 [16:47:03.134] SSH Resolver called for "ssh-remote+XXX.XXX.XXX.XXX", attempt 1 [16:47:03.134] "remote.SSH.useLocalServer": true [16:47:03.134] "remote.SSH.path": undefined [16:47:03.134] "remote.SSH.configFile": undefined [16:47:03.134] "remote.SSH.useFlock": true [16:47:03.134] "remote.SSH.lockfilesInTmp": false [16:47:03.135] "remote.SSH.localServerDownload": auto [16:47:03.135] "remote.SSH.remoteServerListenOnSocket": false [16:47:03.135] "remote.SSH.showLoginTerminal": false [16:47:03.135] "remote.SSH.defaultExtensions": [] [16:47:03.135] "remote.SSH.loglevel": 2 (中略) [16:47:10.718] > f65ab02174eb%%2%% > tar --version: [16:47:10.718] stderr> main: 行 417: tar: コマンドが見つかりません [16:47:10.719] stderr> main: 行 418: tar: コマンドが見つかりません [16:47:10.722] stderr> mv: 'vscode-server*/*' を stat できません: そのようなファイルやディレクトリはありません [16:47:10.722] > ERROR: /root/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/node or /root/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/server.sh don't exist > Trigger local server download > f65ab02174eb:trigger_server_download > platform==linux== > vscodeArch==x64== > destFolder==/root/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335== > f65ab02174eb:trigger_server_download_end > Waiting for client to transfer server archive... > Waiting for /root/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/vscode-scp-done.flag and vscode-server.tar.gz to exist (中略) [16:47:14.624] > root@XXX.XXX.XXX.XXXs password: [16:47:14.625] Showing password prompt
原因箇所
[16:47:10.718] > f65ab02174eb%%2%% > tar --version: [16:47:10.718] stderr> main: 行 417: tar: コマンドが見つかりません [16:47:10.719] stderr> main: 行 418: tar: コマンドが見つかりません [16:47:10.722] stderr> mv: 'vscode-server*/*' を stat できません: そのようなファイルやディレクトリはありません [16:47:10.722] > ERROR: /root/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/node or /root/.vscode-server/bin/054a9295330880ed74ceaedda236253b4f39a335/server.sh don't exist
上記はログの一部です。エラー近辺を確認するとtarコマンドを実行しようとして、tarコマンドが見つからず、後続でエラーとなっています。
接続先のCentOSをインストールする際に『最小限のインストール』を選択してインストールしたため、tar パッケージがインストールされていないようです。
対応方法
接続先のCentOSに対してtarコマンドをインストールします。別の方法で接続先にアクセスし、以下のコマンドを実行します。
sudo dnf install tar
再接続
再度Remote-SSHを使って接続を行います。
設定したホスト名を選択します。
パスワードを入力
ログインできました。
まとめ
今回はRemote-SSHを使っての接続方法とその際、私が接続に失敗した原因と対応方法について紹介をしました。他の拡張機能と組み合わせて利用することで、より便利に使うことに可能になりそうです。その方法についてはもう少し勉強してまたご紹介したいと思います。
今回詳しくは触れませんでしたが、Remote -SSHを使って接続したあと、以下のcodeコマンドを使うことで、任意のフォルダを新規ウィ ンドウで開けます。
code XXX(任意のパス)
以下に実行した画面と、その後開いたウィンドウを貼っておきます
code実行画面
画面右側にcodeコマンドで開いたディレクトリが表示されています。