web関連

【VS Code】拡張機能「SFTP」のエラーまとめ

「Visual Studio Code」の拡張機能「SFTP」でエラーメッセージが出た時の備忘録
拡張機能「SFTP」の設定方法はこちら

エラーメッセージ+空のファイルがアップロードされる

以下のようなエラーメッセージとポップアップが出た。
アップロードはできるが空のファイルがアップロードされるという現象。

[warn] ENOENT: no such file or directory, open 'C:\Users\<username>\.ssh\config' load C:\Users\<username>\.ssh\config failed
[error] TypeError: Cannot set property closed of #<Writable> which has only a getter

対応策1:パス「C:\」を「/」に変換する

ファイルパスの記述を以下に変更したら一時的にアップロードが上手くいくようになった
※Windowsの「C:\」は「/」に変換する必要あるよう

// × 間違った書き方
"privateKeyPath": "C:/Users/ユーザー名/….ppk",
// ○ 正しい書き方
"privateKeyPath": "/Users/ユーザー名/….ppk",

しかし、2度目行ったら再度ポップアップが表示され、空のファイルがアップロードされるなど元に戻ってしまった。

対応策2:sftp.jsonの修正

GitHubのIssuesを参考に"profiles": {}"context"を追加するが変化なし。

解決策:「SFTP」のプラグインの変更

「SFTP」のプラグインのキャッシュなどが問題の可能性がある、という記事を見たので再インストールし直そうしたところ「liximomo.sftp-1.12.10」は非推奨のため「natizyskunk.sftp-1.16.3」を使うように案内が表示された。

案内に従い、「natizyskunk」の「SFTP」のプラグインを使ったところ、ポップアップと空のファイルがアップロードされる現象は消えた。

しかし、[warn] ENOENT: no such file or directory, open 'C:\Users\\.ssh\config' load C:\Users\\.ssh\config failedのエラーは消えてない。

とりあえずが、アップロードされているので取り急ぎ無視。

「/.ssh/config」とは?(メモ)

[warn] ENOENT: no such file or directory, open 'C:\Users\\.ssh\config' load C:\Users\\.ssh\config failedというエラーを直そうと思うと.sshディレクトリとconfigファイルを作る必要がありそう。

  • 「/.ssh/config」は、SSH接続を簡単にしたり、複数のSSH接続を管理できる
  • 「OpenSSH」などをインストールするとC:\Users\ユーザー名\.sshが生成されるらしい、なければ手動で作成する
  • HostName:ホスト名(「ssh ホスト名」で接続)User:ログインユーザ名port:ポート番号IdentityFile:秘密鍵へのパスこれらをconfigで管理

ssh接続を調べていると、C:\Users\ユーザー名\.sshがあることが一般的のような記事を見るため、VS Codeのプラグイン「SFTP」もデフォルトで参照する設定なのかもしれない。

もし、configファイルを用意するなら、sftp.jsonからポートや秘密鍵の記載は削除しても動く可能性あり?

エラーメッセージ:「Error: No such file」

「liximomo」の「SFTP」プラグインの方は現在、バージョン「liximomo.sftp-1.12.10」なのでエラーは出ないが、「liximomo.sftp-1.12.9」だとError: No such fileというエラー(ポップアップ)が出るので、以下のsftp.jsファイルにoptions.autoDestroy = false;の記述を追加

C:\Users\(ユーザーフォルダ名)\.vscode\extensions\liximomo.sftp-1.12.9\node_modules\ssh2-streams\lib\sftp.js
options.emitClose = false;
// ↓ 追加
options.autoDestroy = false;

一応、「sftp-1.12.10」の方では上記記述が追記されているが、別のエラーが出るので、「natizyskunk」の「SFTP」のプラグインを使った方が良いのかもしれない。

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。