使用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