SFTP Remote Deploy
Note: この拡張機能は現在プレリリース版(v0.x)です。機能や設定の仕様は今後のバージョンで変更される場合があります。
VS Code / Cursor で SFTP・FTP ファイルをサーバーへ即アップロード。
右クリック、ステータスバークリックで、フロントエンド開発・WordPress・静的サイトのデプロイ作業を高速化します。
主な機能
| 機能 |
説明 |
| 右クリックアップロード |
エクスプローラーやエディタタブで右クリック → アップロード |
| 保存時の自動アップロード (Upload on Save) |
Cmd+S / Ctrl+S でファイルを保存すると同時にサーバーへ転送 |
| ステータスバー サーバー切替 |
ワークスペースごとにアクティブサーバーをクリックで切替 |
| GUI 設定パネル |
接続設定・マッピングをフォームで管理 |
| Remote Explorer |
サーバーのファイルツリーをサイドバーで参照・操作 |
| デプロイ済みバージョンと比較 |
ローカルファイルとサーバー上のファイルを diff で確認 |
| 転送ログ |
アップロード履歴を一覧表示(クリックで詳細) |
| フォルダ一括アップロード |
ディレクトリごとまとめて転送 |
| SFTP / FTP / FTPS 対応 |
SSH鍵・パスワード・SSHエージェント・プロキシも対応 |
| AI エージェント連携 |
Cursor 等の AI エージェントが scp/rsync でデプロイ(オプトイン) |
クイックスタート
1. サーバーを追加する
- ステータスバーの ☁ No Server をクリック
- + Add New Server… → 設定パネルが開く
- Connection タブでホスト・ポート・ユーザー名・認証情報を入力
- 接続テスト で接続確認 → 保存
2. マッピングを設定する
Mapping タブでローカルフォルダ ↔ リモートフォルダの対応を登録します。
1サーバーにつき1マッピングです。複数のリモートパスへ転送したい場合はサーバーを複製してください。
| 項目 |
例 |
| Local Path |
themes/my-theme(ワークスペースルートからの相対パス) |
| Remote Path |
/home/user/public_html/wp-content/themes/my-theme |
ヒント: Connection タブで「リモートルートパス」を設定すると、Mapping タブの Remote Path に自動反映されます。手動で別のパスを入力している場合は上書きされません。
3. ファイルをアップロードする
- 右クリック → Upload to Active Server
- Cmd+S / Ctrl+S → Upload on Save が ON のとき自動転送(ステータスバーの Auto アイコンで切替)
- コマンドパレット →
SFTP Remote Deploy: Upload to Active Server
Upload on Save の切り替え
ステータスバー右側の Auto アイコンをクリックするだけで ON/OFF を切り替えられます。
- ☁ Auto — ON(保存時に自動転送)
- ⊘ Auto — OFF(手動のみ)
設定パネルの Connection タブからサーバーごとに個別設定することもできます。
Remote Explorer
サイドバーの REMOTE EXPLORER パネルでサーバー上のファイルツリーを参照・操作できます。
| 操作 |
方法 |
| ファイルをダウンロード |
ファイルをクリック |
| ファイルを削除 / リネーム |
右クリック → 削除 / リネーム |
| 新規フォルダー作成 |
右クリック → 新規フォルダー |
| 新規ファイル作成 |
右クリック → 新規ファイル |
| リモートパスをコピー |
右クリック → リモートパスをコピー |
| サーバーを複製 / 削除 |
設定パネルの右クリックメニュー |
対応プロトコル・認証方式
| プロトコル |
認証方式 |
| SFTP |
パスワード / SSH 秘密鍵 / SSH エージェント ($SSH_AUTH_SOCK) |
| FTP |
パスワード |
| FTPS |
Explicit (STARTTLS) / Implicit (ポート 990) |
プロキシ (SOCKS5 / HTTP) 経由の接続もサポートします。
プランと制限
|
Free |
Pro |
| サーバー数 |
3 |
無制限 |
| 同時転送数 |
1 |
設定可 |
| 全機能 |
✅ |
✅ |
Pro へのアップグレード: コマンドパレット → SFTP Remote Deploy: Enter License Key
よくある質問
Q. パスワードはどこに保存されますか?
A. エディターの SecretStorage(macOS Keychain / Windows Credential Manager / Linux Secret Service)に保存されます。設定ファイルに平文で書き出されることはありません。
Q. サーバー設定は他のプロジェクトでも使えますか?
A. はい。サーバー設定はグローバルに保存されるため、どのワークスペースからでも同じサーバー一覧を参照できます。アクティブサーバーはワークスペースごとに個別管理されます。
Q. sftp.json(他の SFTP 拡張の設定ファイル)を移行できますか?
A. コマンドパレット → SFTP Remote Deploy: Import sftp.json で一括インポートできます。
Q. 同一サーバーで複数のリモートパスへ転送したい
A. 設定パネルで対象サーバーを右クリック → 「複製」でサーバー設定をコピーし、それぞれ別のリモートパスを指定してください。
Q. 「リモートルートパス」と「リモートパス(マッピング)」の違いは?
A. それぞれ役割が異なります。
| 設定 |
場所 |
用途 |
| リモートルートパス |
接続設定タブ |
Remote Explorer のツリー表示の起点 |
| リモートパス |
パスマッピングタブ |
ファイルアップロード先のディレクトリ |
よくあるパターン:
| パターン |
リモートルートパス |
リモートパス(マッピング) |
説明 |
| 基本 |
/home/user |
/home/user/public_html/themes/my-theme |
ルートは Explorer 用、マッピングはデプロイ先 |
| 同一パス |
/home/user/public_html |
/home/user/public_html |
Explorer 起点 = デプロイ先 |
| ルートのみ |
/home/user |
(空) |
ルートを設定するとマッピングに自動反映 |
| マッピングのみ |
(空) |
/var/www/html/my-site |
Remote Explorer はサーバーの / から表示 |
ヒント: 「リモートルートパス」を変更すると「リモートパス」も自動で追従しますが、手動で別の値を設定済みの場合は上書きされません。
Q. アップロードしたがサイトに反映されない
A. PHP OPcache や CDN キャッシュが原因の場合があります。Remote Explorer でファイルをダウンロードしてローカルと比較し、転送が正しく行われたか確認してください。
AI エージェント連携(オプション)
Cursor 等の AI エージェントが scp / rsync でデプロイできるよう、サーバー接続情報をワークスペース内に保存する機能です。
全設定はデフォルト OFF — AI エージェントを使わないユーザーには一切影響しません。
設定
settings.json で段階的に有効化できます。
| 設定 |
デフォルト |
効果 |
agent.enabled |
false |
マスタースイッチ。OFF のとき何も保存しない |
agent.allowRead |
false |
基本情報(ホスト・ポート・ユーザー名・マッピング)を保存 |
agent.allowMutating |
false |
SSH 秘密鍵のパスも含めて保存(デプロイ実行に必要) |
{
"sftpRemoteDeploy.agent.enabled": true,
"sftpRemoteDeploy.agent.allowRead": true,
"sftpRemoteDeploy.agent.allowMutating": true
}
対象
- SSH 鍵認証の SFTP のみ対応。パスワード認証・FTP / FTPS は対象外です。
- 対象サーバーの情報が
.cursor/sftp-remote-deploy-agent.json に保存されます。
AI エージェントの使い方
サーバー接続情報は .cursor/sftp-remote-deploy-agent.json に保存されます。
AI エージェントにデプロイを依頼するときは、このファイルの場所を伝えてください。
プロンプト例:
.cursor/sftp-remote-deploy-agent.json を読んで、変更したファイルをサーバーにデプロイして。
.cursor/sftp-remote-deploy-agent.json の設定で src/index.php をアップロードして。
エージェントは設定ファイルを読み、以下のようなコマンドを構築・実行します。
scp -i ~/.ssh/id_rsa -P 22 ./src/index.php deploy@example.com:/var/www/html/index.php
rsync -avz -e "ssh -i ~/.ssh/id_rsa -p 22" \
--exclude='node_modules/**' --exclude='.git/**' \
./src/ deploy@example.com:/var/www/html/
ヒント: プロジェクトの .cursorrules や .cursor/rules/ にデプロイ手順を記載しておくと、毎回ファイルパスを伝えなくても AI エージェントが自動的に参照します。
事前準備: known_hosts の登録
AI エージェントが scp / rsync を実行する際、サーバーが ~/.ssh/known_hosts に未登録だとホストキー検証エラーで失敗します。
事前にターミナルから一度 SSH 接続して、ホストキーを登録しておいてください。
ssh -p 22 deploy@example.com
# "Are you sure you want to continue connecting?" → yes で登録される
注意: AI エージェントが -o StrictHostKeyChecking=accept-new 等のオプションを自動付与してホストキー検証を回避する場合があります。中間者攻撃のリスクがあるため、上記の手動登録を推奨します。
セキュリティに関する注意
allowRead のみの場合、秘密鍵のパスは保存されません。ただし SSH エージェントが動作中 の環境では、ホスト・ユーザー名だけでデプロイ可能な場合があります。
allowMutating を有効にすると秘密鍵のパスが含まれます。有効化時に確認ダイアログが表示されます。
- 設定ファイルは初回保存時に
.gitignore へ自動追記されますが、ワークスペースに保存された時点で拡張機能の管理外 となります。
agent.enabled または agent.allowRead を OFF にすると、設定ファイルの削除を確認するダイアログが表示されます。
- 手動削除:
.cursor/sftp-remote-deploy-agent.json をエクスプローラーやターミナルから削除してください。
セキュリティと免責事項
- 本拡張機能はサーバーの認証情報(パスワード・SSH 鍵など)を扱います。認証情報はエディターの SecretStorage(macOS Keychain / Windows Credential Manager 等)に保存されますが、利用環境のセキュリティ管理はユーザーご自身の責任で行ってください。
- リモートサーバーへのファイル転送・削除は元に戻せない場合があります。本番環境への操作は十分にご注意ください。
- 本ソフトウェアの使用によって生じたデータ損失、セキュリティインシデント、その他いかなる損害についても、作者は一切の責任を負いません。
- 詳細は MIT License をご確認ください。
ライセンス
MIT