使用sftp搭建本地快速部署环境

目录

准备

首先,我们要确保sshd也就是我们的ssh服务处于运行状态之中,下面以centos为例来讲解搭建的过程。

必要的包: openssh-clients openssh-server

运行下面的命令以确定我们的ssh服务处于active的状态中

$ systemctl status sshd

开始

新建一个用户(非root用户请加sudo)

$ adduser test
$ passwd test

设置密码,更新用户令牌信息,本地生成SSH密钥并将公钥放置于服务器,确保能从本地使用SSH登录远程主机

明确新用户的文件夹权限

$ chown root:root /../somepath/sftp
$ chmod 755 /../somepath/sftp 

在sftp文件夹下创建uploads文件夹,所有上传的文件都会在里面,将拥有者设置为test用户

$ chown test:test /../somepath/sftp/uploads

PasswordAuthentication设置为no并保存,确保不能用密码建立SSH连接并重启SSH服务

$ vi /etc/ssh/sshd_config
$ ...
$ systemctl restart sshd

现在在本地尝试使用sftp进行登录

sftp -i ~/.ssh/key test@ip_address

发现进入sftp即成功!

使用vscode配置快速部署环境

这里是用的是 ftp-sync 插件

安装完成之后按F1

选择Ftp-sync: init

就可以在.vscode文件夹下找到ftp-sync.json文件

{
    "remotePath": "/../sftp/uploads/project",
    "host": "",	// ip地址
    "username": "test",
    "password": null,	// 留空,因为使用了更安全的sftp协议传输文件
    "port": 22,	// SSH端口
    "secure": true,
    "protocol": "sftp",
    "uploadOnSave": false,
    "passive": false,
    "debug": false,
    "privateKeyPath": "/Users/user/.ssh/key",  // 本地密钥的地址
    "passphrase": null,
    "ignore": [
        "\\.vscode",
        "\\.git",
        "\\.DS_Store",
        "\\node_modules",
        "\\test",
        "\\.travis.yml"		// 想要忽略上传的文件夹或文件
    ],
    "generatedFiles": {
        "uploadOnSave": false,
        "extensionsToInclude": [],
        "path": ""
    }
}

然后愉快地快速部署到服务器吧

F1

选择 Ftp-sync: Local To Remote

选择 full-sync,执行上传。大功告成!

注: 如果是node项目的话可以使用pm2检测文件更改自动重启服务,一键更新线上代码!

参考:

https://www.digitalocean.com/community/tutorials/how-to-enable-sftp-without-shell-access-on-centos-7