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 root@{ip地址}
# 设置了密码的需要输⼊登录密码。
连接成功后默认进⼊的是登录⽤户的⽤户⽬录,root⽤户进⼊到/root⽬录,admin⽤户进⼊到/home/admin⽬录。
问题:vscode ⽆法同步
初始配置:
{
"name": "{服务器ip}",
"host": "{服务器ip}",
"protocol": "sftp",
"port": 22,
"username": "root",
"password": "{对应的⽤户密码}",
"remotePath": "/data/wwwroot/h/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/h/frontend",
"privateKeyPath": "/Users/kameila/.ssh/github_rsa",
"uploadOnSave": true,
"ignore": [".vscode", ".git", ".DS_Store", "node_modules", "vendor"]
}
此后便可以成功同步服务器⽂件。
备注
起初服务器搭建sftp参考了教程,按操作创建单独的sftp⽤户组sftp-users,单独的sftp⽤户admin,单独的⽂件同步⽬录/home/admin,等等。但是操作完有⼀系列问题。
问题1: 单独的⽂件同步⽬录/home/admin需要设置成sftp⽤户组和⽤户的访问权限,但是我的web服务器nginx的⽬录
是/data/wwwroot/h/frontend,并且nginx配置⾥⾯需要web⽬录的权限⽤户组和⽤户是www。这导致sftp同步⽂件之后还需要考虑⽅案来让nginx服务器直接能够访问sftp同步⽬录。
对于sftp同步⽬录和nginx的web⽬录不⼀致的问题还可以通过修改nginx虚拟主机配置⽂件的根⽬录或者建⽴软链的⽅式解决,但是⽬录权限的问题却没有想到好的办法。
如何搭建git服务器经过⼀系列尝试以后,最后想着与其修改nginx的配置重定义根⽬录⽤户组和⽤户,不如通过修改sftp组名和⽤户名的⽅式调整,并且后来查看公司sftp的配置⽂件,发现公司的这个配置⽂件并没有重新定义⽤户组和⽤户,所以感觉好像没必要创建单独的组合⽤户,于是索性没再按照上述教程中的步骤,直接通过root或admin⽤户访问。
绕了⼀⼤圈的感觉,但是不知道这种⽅式对于企业级项⽬会不会存在安全隐患,⽬前个⼈服务器上使⽤对于安全的要求没有那么⼤,先这样使⽤,如果有问题再做调整。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论