诸暨市纤凝网

vscode使用SFTP的示例代码

2026-03-28 15:14:01 浏览次数:1
详细信息

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 命令 大文件:传输大文件时考虑使用压缩或分片

这个插件可以大大提高开发效率,特别适合需要频繁在本地和远程服务器之间同步代码的场景。

相关推荐