服務器:騰訊雲 + centos + onestack搭建好的lnmp環境node
本地:macnginx
sudo yum install openssh-client openssh-server openssh-sftp-server
ssh方式鏈接sftp的配置文件在/etc/ssh/sshd_config
, 能夠在該文件指定端口號和相關參數。修改配置後須要重啓sshgit
systemctl restart sshd
service restart ssh
本地終端執行:github
sftp -P22 root@{ip地址} # 設置了密碼的須要輸入登陸密碼。
鏈接成功後默認進入的是登陸用戶的用戶目錄,root用戶進入到/root
目錄,admin用戶進入到/home/admin
目錄。web
初始配置:json
{ "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"] }
問題:ubuntu
終端鏈接成功後,配置sftp sync
插件,可是上傳和下載時提示Permission Denied
centos
問題分析:安全
因爲個人服務器上root用戶配置了禁用密碼登陸,只能使用ssh登陸,因此不用設置password
項,即便設置了也是無效的。而sftp的配置默認加載的私鑰文件是~/.ssh/id_rsa
。而我設置鏈接服務器的祕鑰文件是~/.ssh/github_rsa
bash
調整後:
{ "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用戶訪問。
繞了一大圈的感受,可是不知道這種方式對於企業級項目會不會存在安全隱患,目前我的服務器上使用對於安全的要求沒有那麼大,先這樣使用,若是有問題再作調整。