はじめに
「ローカル環境は快適なのに、リモートサーバーにSSH接続しようとするとVS Codeがエラーを吐く…」
以下のようなエラーメッセージに遭遇したことはありませんか?
Creating the server install dir failed...
これは、VS CodeがSSH接続時にリモートサーバー上に.vscode-server
というディレクトリを作成しようとする際に、ホームディレクトリの容量が不足している、あるいは一時ディレクトリとして利用される/tmp
の容量が足りない場合に発生します。
VS CodeのRemote - SSH拡張機能は、デフォルトでリモートサーバーのホームディレクトリにVS Code Serverをインストールしようとするため、このような状況に陥ります。
いくつかの設定を見直すことで、この問題を回避し、快適なリモート開発環境を取り戻すことができます。
この記事では 「ホームディレクトリ以外は容量が空いてるけどホームディレクトリが容量不足の人でvscodeがssh接続失敗する人」 に向けて、具体的な解決手順を解説します。
最初にまとめ
VS CodeのSSH接続時にホームディレクトリの容量不足が原因でエラーが発生する問題を解決するための手順
- SSH configに
RemoteCommand
を使って設定して環境変数にTMPDIR
を指定する。 - VS Codeの設定で「Remote - SSH: Server Install Path」を容量に余裕のあるディレクトリに変更する。
- VS Codeの設定で「Remote - SSH: Enable Remote Command」を有効にする。
これらの設定を行うことで、ホームディレクトリの容量を気にすることなく、快適なリモート開発環境を構築できます。もし同じ問題に悩んでいる方がいれば、ぜひこの方法を試してみてください。
エラーの原因を再確認
改めて、エラーが発生する原因を確認しておきましょう。
VS CodeのRemote - SSH拡張機能は、リモートサーバーとの接続時に、VS Code Serverというバックエンドコンポーネントをインストールします。このサーバーのインストール先として、デフォルトではリモートサーバーのホームディレクトリにある.vscode-server
ディレクトリが使用されます。
また、インストールや実行時に一時的なファイルを作成するために/tmp
ディレクトリも利用されます。
したがって、
- リモートサーバーのホームディレクトリの空き容量が少ない
- リモートサーバーの
/tmp
ディレクトリの空き容量が少ない
いずれかの状況に該当する場合、「Creating the server install dir failed...」というエラーが発生してしまうのです。
解決策:VS Codeの設定を変更する
この問題を解決するには、以下の2つの設定を変更します。
- SSH configの設定: リモートサーバー上の一時ディレクトリの場所を明示的に指定します。
- VS Codeの設定: VS Code Serverのインストール先を、容量に余裕のあるディレクトリに変更します。
それでは、具体的な手順を見ていきましょう。
手順1:SSH configに一時ディレクトリを指定する
まず、ローカルマシンのSSH設定ファイル (~/.ssh/config
) を編集し、接続先のホストに対して一時ディレクトリの場所を指定します。
以下の例のように、RemoteCommand
ディレクティブを利用して、リモート接続時に環境変数 TMPDIR
を設定します。
Host your_host
HostName hoge
IdentityFile fuga
User piyo
RemoteCommand export TMPDIR=/your/tmp ; bash
-
Host your_host
: VS Codeのリモートエクスプローラーに表示されるホスト名です。任意の名前に変更可能です。 -
HostName hoge
: 実際に接続するリモート
サーバーのホスト名またはIPアドレスを指定します。 -
IdentityFile fuga
: SSH接続に使用する秘密鍵のパスを指定します。 -
User piyo
: リモートサーバーのユーザー名を指定します。 -
RemoteCommand export TMPDIR=/your/tmp bash
: 重要な設定です。リモート接続時にTMPDIR
環境変数を設定し、その後にbash
を起動します。/your/tmp
の部分は、リモートサーバー上で容量に余裕のある任意のディレクトリのパスに置き換えてください。
ポイント: RemoteCommand
を設定することで、VS Codeがリモート接続を開始する前に、指定した一時ディレクトリが有効になります。
手順2:VS Codeの設定でServer Install Pathを指定する
次に、VS Codeの設定を変更し、VS Code Serverのインストール先を、手順1で指定した一時ディレクトリとは別の、容量に余裕のあるディレクトリに変更します。
- VS Codeの左下にある歯車アイコンをクリックし、「設定」を開きます。
- 検索バーに「ssh」と入力します。
- 「Remote - SSH: Server Install Path」という項目を見つけます。
- この項目の値を、your_hostとリモートサーバー上で容量に余裕のある任意のディレクトリのパスに設定します。例えば、
/opt/vscode-server
などが考えられます。
注意: このディレクトリは、リモートサーバー上に事前に作成しておく必要があります。
手順3:VS Codeの設定でEnable Remote Commandを有効にする
手順1で RemoteCommand
を設定した場合、VS Code側でその実行を許可する必要があります。
- VS Codeの設定画面で、検索バーに「remote.enable」と入力します。
- 「Remote - SSH: Enable Remote Command」という項目を見つけ、チェックボックスをオンにします。
手順4:リモートエクスプローラーから接続!
上記の設定が完了したら、VS Codeの左側にあるリモートエクスプローラーから、設定したホストを選択して接続を試してみてください。
今度は、ホームディレクトリの容量不足に悩まされることなく、スムーズにリモートサーバーに接続できるはずです!