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

准备

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

必要的包: openssh-clients openssh-server

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

1
$ systemctl status sshd

开始

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

1
$ adduser test
1
$ passwd test

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

明确新用户的文件夹权限

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

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

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

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

1
2
3
$ vi /etc/ssh/sshd_config
$ ...
$ systemctl restart sshd

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

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

发现进入sftp即成功!

使用vscode配置快速部署环境

这里是用的是 ftp-sync 插件

安装完成之后按F1

选择Ftp-sync: init

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
"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

作者

马克鱼

发布于

2017-09-10

更新于

2025-10-12

许可协议