1. 安装插件
在 VS Code 扩展商店中搜索并安装 SFTP 插件(作者:Natizyskunk)
2. 基本配置文件示例
项目根目录创建 .vscode/sftp.json
{
"name": "My Server",
"host": "your-server.com",
"protocol": "sftp",
"port": 22,
"username": "your-username",
"password": "your-password",
// 或者使用私钥认证
// "privateKeyPath": "~/.ssh/id_rsa",
// "passphrase": "your-passphrase",
"remotePath": "/var/www/html",
"uploadOnSave": true,
"syncMode": "update",
"ignore": [
".vscode/**",
".git/**",
".DS_Store",
"node_modules/**",
"tmp/**",
"*.log"
],
"watcher": {
"files": "**/*",
"autoUpload": true,
"autoDelete": false
}
}
3. 多种认证方式示例
密码认证
{
"name": "Password Auth",
"host": "192.168.1.100",
"protocol": "sftp",
"port": 22,
"username": "user",
"password": "password123",
"remotePath": "/home/user/project",
"uploadOnSave": true
}
SSH 密钥认证
{
"name": "SSH Key Auth",
"host": "example.com",
"protocol": "sftp",
"port": 22,
"username": "ubuntu",
"privateKeyPath": "C:/Users/username/.ssh/id_rsa",
"passphrase": "your-passphrase", // 如果私钥有密码
"remotePath": "/home/ubuntu/project"
}
使用 SSH Config
{
"name": "SSH Config",
"host": "my-ssh-alias", // ~/.ssh/config 中定义的别名
"protocol": "sftp",
"remotePath": "/path/to/project",
"context": "/local/project/path"
}
4. 高级配置示例
{
"name": "Advanced Config",
"host": "prod-server.com",
"protocol": "sftp",
"port": 2222,
"username": "deploy",
"password": "deploy-password",
"remotePath": "/var/www/production",
"uploadOnSave": true,
"syncMode": "full", // "full", "update", "mirror"
"syncOption": {
"delete": true, // 同步时删除远程多余文件
"skipCreate": false,
"ignoreExisting": false,
"confirm": true // 执行前确认
},
"ignore": [
".vscode/**",
".git/**",
"**/node_modules/**",
"**/*.log",
"**/tmp/**",
"**/test/**",
"config/local*.json"
],
"concurrency": 4, // 并发传输数
"connectTimeout": 10000,
// 文件传输模式
"protocolOptions": {
"readyTimeout": 10000
},
// 监控配置
"watcher": {
"files": "**/*.{php,js,css,html,json}",
"autoUpload": true,
"autoDelete": true
},
// 自定义命令
"commands": {
"beforeUpload": "npm run build",
"afterUpload": "chmod -R 755 /var/www/production"
}
}
5. 多环境配置
.vscode/sftp.json
[
{
"name": "Development",
"context": "./dev",
"host": "dev-server.com",
"username": "dev-user",
"password": "dev-password",
"remotePath": "/var/www/dev",
"uploadOnSave": true,
"ignore": [".vscode/**", ".git/**", "node_modules/**"]
},
{
"name": "Production",
"context": "./prod",
"host": "prod-server.com",
"username": "prod-user",
"privateKeyPath": "~/.ssh/prod_key",
"remotePath": "/var/www/production",
"uploadOnSave": false, // 生产环境手动上传
"syncOption": {
"delete": false,
"confirm": true
}
},
{
"name": "Staging",
"context": "./staging",
"host": "staging-server.com",
"username": "staging",
"password": "staging-password",
"remotePath": "/var/www/staging"
}
]
6. 常用命令
在 VS Code 命令面板中:
SFTP: Config - 生成配置文件
SFTP: Upload - 上传当前文件
SFTP: Upload Project - 上传整个项目
SFTP: Download - 下载文件
SFTP: Download Project - 下载整个项目
SFTP: Sync Local -> Remote - 同步到远程
SFTP: Sync Remote -> Local - 从远程同步到本地
SFTP: List - 列出远程文件
SFTP: List Active Folder - 列出当前文件夹
7. 使用技巧
快速切换配置
// 在 .vscode/sftp.json 中
{
"profiles": {
"dev": {
"host": "dev.example.com",
"username": "dev"
},
"prod": {
"host": "prod.example.com",
"username": "prod"
}
},
"defaultProfile": "dev"
}
排除特定文件类型
{
"ignore": [
"**/.vscode/**",
"**/.git/**",
"**/.DS_Store",
"**/node_modules/**",
"**/*.map",
"**/*.log",
"tmp/**",
"cache/**",
"*.bak",
"*.tmp"
]
}
注意事项
安全性:不要在配置文件中硬编码密码,建议使用 SSH 密钥认证
同步前备份:特别是使用
"syncMode": "full" 或
"delete": true 时
连接超时:网络不稳定时可适当增加
connectTimeout
文件权限:上传后可能需要执行
chmod 命令
大文件:传输大文件时考虑使用压缩或分片
这个插件可以大大提高开发效率,特别适合需要频繁在本地和远程服务器之间同步代码的场景。