vscode使用sftp同步服务器文件
环境介绍
服务器:腾讯云 + centos + onestack搭建好的lnmp环境
本地:mac
安装openssh
sudo yum install openssh-client openssh-server openssh-sftp-server
配置
ssh方式连接sftp的配置文件在/etc/ssh/sshd_config
, 可以在该文件指定端口号和相关参数。修改配置后需要重启ssh
-
centos:
systemctl restart sshd
-
ubuntu:
service restart ssh
命令行连接sftp
本地终端执行:
sftp -P22 [email protected]{ip地址}
# 设置了密码的需要输入登录密码。
连接成功后默认进入的是登录用户的用户目录,root用户进入到/root
目录,admin用户进入到/home/admin
目录。
问题:vscode 无法同步
初始配置:
{
"name": "{服务器ip}",
"host": "{服务器ip}",
"protocol": "sftp",
"port": 22,
"username": "root",
"password": "Zq123456",
"remotePath": "/data/wwwroot/www.i2arch.tech/frontend",
"uploadOnSave": true,
"ignore": [".vscode", ".git", ".DS_Store", "node_modules", "vendor"]
}
问题:
终端连接成功后,配置sftp sync
插件,但是上传和下载时提示Permission Denied
问题分析:
由于我的服务器上root用户配置了禁用密码登录,只能使用ssh登录,所以不用设置password
项,即使设置了也是无效的。而sftp的配置默认加载的私钥文件是~/.ssh/id_rsa
。而我设置连接服务器的秘钥文件是~/.ssh/github_rsa
调整后:
{
"name": "{服务器ip}",
"host": "{服务器ip}",
"protocol": "sftp",
"port": 22,
"username": "root",
"remotePath": "/data/wwwroot/www.i2arch.tech/frontend",
"privateKeyPath": "/Users/kameila/.ssh/github_rsa",
"uploadOnSave": true,
"ignore": [".vscode", ".git", ".DS_Store", "node_modules", "vendor"]
}
此后便可以成功同步服务器文件。
备注
起初服务器搭建sftp参考了教程Linux 配置SFTP,配置用户访问权限,按操作创建单独的sftp用户组sftp-users
,单独的sftp用户admin
,单独的文件同步目录/home/admin
,等等。但是操作完有一系列问题。
问题1: 单独的文件同步目录/home/admin
需要设置成sftp用户组和用户的访问权限,但是我的web服务器nginx的目录是/data/wwwroot/www.i2arch.tech/frontend
,并且nginx配置里面需要web目录的权限用户组和用户是www
。这导致sftp同步文件之后还需要考虑方案来让nginx服务器直接能够访问sftp同步目录。
对于sftp同步目录和nginx的web目录不一致的问题还可以通过修改nginx虚拟主机配置文件的根目录或者建立软链的方式解决,但是目录权限的问题却没有想到好的办法。
经过一系列尝试以后,最后想着与其修改nginx的配置重定义根目录用户组和用户,不如通过修改sftp组名和用户名的方式调整,并且后来查看公司sftp的配置文件,发现公司的这个配置文件并没有重新定义用户组和用户,所以感觉好像没必要创建单独的组合用户,于是索性没再按照上述教程中的步骤,直接通过root或admin用户访问。
绕了一大圈的感觉,但是不知道这种方式对于企业级项目会不会存在安全隐患,目前个人服务器上使用对于安全的要求没有那么大,先这样使用,如果有问题再做调整。
推荐阅读
-
使用 WinSCP 管理 Linux VPS/服务器上的文件 图文教程
-
Linux系统如何使用SFTP方式传输文件具体图解
-
RSync文件备份同步 Linux服务器rsync同步配置图文教程
-
Ruby使用eventmachine为HTTP服务器添加文件下载功能
-
python实现的文件同步服务器实例
-
使用NodePad++来编辑我们服务器的配置文件防止无法运行
-
使用nginx缓存服务器上静态文件的设置方法
-
设置Xlight FTP服务器使用SSH2/SFTP协议的步骤
-
使用scp获取远程linux服务器上的文件 linux远程拷贝文件
-
python 使用poster模块进行http方式的文件传输到服务器的方法