Hanatare's PaPa

Make life a little richer.

Virtual Space of Hanatare's PaPa

人生をほんの少しだけ充実させる

【Visual Studio Code】Remote -SSHでCentOSに接続できない

f:id:nothing-title:20210520233335p:plain

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を使った作業を可能にする』拡張機能です。

インストール方法

f:id:nothing-title:20210520152443p:plain

上記の画面の矢印通りの手順を実行します。

  1. VS Codeの拡張機能(Extension)の検索欄に「Remote ssh」と入力する
  2. 検索結果に出てきたRemote - SSHを選択してインストールする
  3. VS Codeを再読み込みする

インストールが完了するとVS Codeの左下のアイコンからRemote - SSHを使えるようになります。

f:id:nothing-title:20210520160900p:plain

SSH接続をしてみる

早速SSH接続を実施してみたいと思います。

今回接続するにあたって前提とするのは以下です。

  • 接続先はCentOS 8.3 (最小限のインストールで構築)
  • ポートにはデフォルトの22番を使う
  • サーバ側には「root」ユーザーで接続する
  • パスワード認証を行う

接続手順

f:id:nothing-title:20210520163015p:plain

コマンドパレットから以下のように「Remote-SSH」と入力して「Remote-SSH:Connect to Host」を選択します。

f:id:nothing-title:20210520163821p:plain

新規に接続先を設定するため「+ Add New SSH Host」を選択します。

f:id:nothing-title:20210520163955p:plain

「ユーザーID@接続先」を入力します。

f:id:nothing-title:20210520164101p:plain

更新するSSH用の設定ファイルを選択します。

f:id:nothing-title:20210520164412p:plain

設定ファイルへの追記が反映すると「Host added!」が表示されます。「Connect」をクリックして接続を開始します。

f:id:nothing-title:20210520164621p:plain

今回はパスワード認証なので、パスワードを入力します。

接続失敗とその原因

接続を試みましたが、接続試行のまま接続に成功しませんでした。そのため、ログを確認して接続できない原因を確認し対応したいと思います。

ログを確認

ログは以下の通りです。しかし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を使って接続を行います。

f:id:nothing-title:20210520223502p:plain

設定したホスト名を選択します。

f:id:nothing-title:20210520223546p:plain

パスワードを入力

f:id:nothing-title:20210520224116p:plain

ログインできました。

まとめ

今回はRemote-SSHを使っての接続方法とその際、私が接続に失敗した原因と対応方法について紹介をしました。他の拡張機能と組み合わせて利用することで、より便利に使うことに可能になりそうです。その方法についてはもう少し勉強してまたご紹介したいと思います。

今回詳しくは触れませんでしたが、Remote -SSHを使って接続したあと、以下のcodeコマンドを使うことで、任意のフォルダを新規ウィ ンドウで開けます。

code XXX(任意のパス)

以下に実行した画面と、その後開いたウィンドウを貼っておきます

f:id:nothing-title:20210520234456p:plain

code実行画面

f:id:nothing-title:20210520234614p:plain

画面右側にcodeコマンドで開いたディレクトリが表示されています。