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/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用戶訪問。
繞了一大圈的感覺,但是不知道這種方式對于企業級項目會不會存在安全隱患,目前個人服務器上使用對于安全的要求沒有那么大,先這樣使用,如果有問題再做調整。
轉載于:https://www.cnblogs.com/zqunor/p/11557019.html
總結
以上是生活随笔為你收集整理的vscode使用sftp同步服务器文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在猜年龄的基础上编写登录、注册方法,并且
- 下一篇: 函数中阶详解内容