VSCode + SFTP の安全な使い方

プログラム
プログラム
スポンサーリンク

VSCode(Visual Studio Code)の SFTP 機能拡張をインストールすると、その名の通り SSH File Transfer Protocol で、ローカルにあるファイルやディレクトリをサーバーにアップロードすることができます。便利な機能拡張なのですが、認証情報をプロジェクトフォルダ配下に保存するため、意図せず認証情報がサーバーにアップロードされ、場合によっては公開されてしまうこともあるので注意が必要です。そこで今回は、VSCode + SFTP の安全な使い方をまとめてみました。

意図せず認証情報が公開されることなんてあるの?

国内のレンタルサーバーにおいて実際に VSCode の SFTP 機能拡張の利用による認証情報の公開が確認されています。

VSCodeのSFTPプラグインの設定で除外設定が正しくされておらず、VSCodeの設定ファイル(.vscode/sftp.json等)がWebサーバー上にアップロードされている事象を確認致しました。

サーバー上に設定ファイルがアップロードされている場合、意図せずSSH接続情報などが漏洩する危険があるため、「/.vscode/」というURLにアクセスした際に403エラーになるようサーバの設定を変更致しました。

VSCodeご利用のお客様へ | ロリポップ より引用

上記のレンタルサーバー事業者様では、親切にも認証情報が保管されるディレクトリへのアクセスを制限してくれていますが、本来は VSCode の SFTP 機能拡張を使う利用者が気をつけなければなりません。

VSCode + SFTP の安全な使い方

VSCode の SFTP 機能拡張を安全に使う方法は次の通り実にシンプルです。

SSH公開鍵認証を使い、SFTP設定ファイルにパスワードを書かない。

上記の原則さえ実施していれば、万が一 VSCodeの設定ファイルが公開サーバーにアップロードされたとしても、認証情報が漏洩することはありません。

接続先サーバーの設定

上にも書いた通り、接続先のサーバーはSSH公開鍵認証で接続できるように設定しておきましょう。

また、VSCode の SFTP 機能拡張で設定するサーバーは開発用サーバーにとどめ、変更管理の観点からも本番サーバーは設定しないことをオススメします。

SFTP機能拡張のインストール

サポートが終了しているSFTP機能拡張もありますので(機能拡張名に取り消し線が付きます)現在サポートされているSFTP機能拡張をインストールしましょう。

SFTP機能拡張の設定

SFTP機能拡張のインストールが終わったら、「表示」メニューから「コマンドパレット」を選択します。

コマンドパレットに「SFTP」と入力して「SFTP: Config」を選択します。

SFTPの設定ファイル「sftp.json」が開きます。

{
    "name": "My Server",
    "host": "localhost",
    "protocol": "sftp",
    "port": 22,
    "username": "username",
    "remotePath": "/",
    "uploadOnSave": false,
    "useTempFile": false,
    "openSsh": false
}

各オプションの意味は次の通りです。初期状態では「privateKeyPath」オプションがありませんので追加してください。

nameサーバー名など、このSFTP設定を識別できる名称を設定します。
host接続先のサーバーのIPアドレスもしくはFQDNを設定します。
protocol「sftp」を設定します。
portSSHの接続先ポート番号を設定します。
usernameSSHのユーザー名を設定します。
privateKeyPathSSH公開鍵認証に使う秘密鍵のファイルパスを設定します。
remotePathアップロード先のディレクトリを設定します。
uploadOnSave「true」に設定するとVSCodeで保存する度にアップロードが実行されます。
useTempFile「true」に設定すると一時ファイルをアップロードし、ファイルがアップロードされたまま(不完全なまま)ユーザがアクセスした場合にウェブページが壊れるのを防ぎます。
openSsh「true」に設定するとアトミックファイルアップロードが有効になります。このオプションを「true」に設定する場合は「useTempFile」も「true」に設定する必要があります。

参考資料:https://github.com/Natizyskunk/vscode-sftp/wiki/configuration

以上をふまえて「sftp.json」を設定します。 以下は設定例です、ご自分の環境に合わせて設定してください。繰り返しになりますが「sftp.json」にSSHのパスワードを書いてはいけません。

{
    "name": "websv01",
    "host": "www.example.com",
    "protocol": "sftp",
    "port": 22,
    "username": "sample",
    "privateKeyPath": "/Users/sample/.ssh/id_ed25519",
    "remotePath": "/var/www/public/",
    "uploadOnSave": false,
    "useTempFile": true,
    "openSsh": true
}

また、GitリポジトリにSFTPなどの設定ファイルが同期されないように、「.vscode」ディレクトリを「.gitignore」に設定して除外しておきましょう。

.gitignore
.vscode/

おわりに

VSCode の SFTP 機能拡張含め、IDEのアップロード機能にはその利用に賛否がありますが、特に Webアプリケーションの開発ではとても便利な機能です。安全に配慮した上でぜひ活用したいですね。

コメント

タイトルとURLをコピーしました