sftp是通過openssh與服務端建立連接的,默認端口爲22
1. 新建一個sftp的用戶,這裏就叫sftp
useradd -s /sbin/nologin sftp
·2. 在sftp用戶的家目錄加上客戶端的公鑰
新建的sftp用戶是沒有 .ssh這個目錄的,要自己手動去創建
mkdir /home/sftp/.ssh
cd /home/sftp/.ssh
touch authorized_keys
vi authorized_keys
把公鑰加進去,保存即可
3. 配置sshd_config裏sftp的相關項
#Subsystem sftp /usr/libexec/openssh/sftp-server // 註釋這一行
添加如下行到文件最後(不加到最後可能會報錯)
# sftp
Subsystem sftp internal-sftp // sftp的相關命令
Match User sftp // 要使用sftp的用戶,這裏我創建的sftp用戶
ChrootDirectory /data/web/application/test // 指定要上傳,下載,修改文件的目錄(注意:網上很多文章說這裏是sftp的家目錄給很多人造成了混淆,其實不一定要把此目錄作爲家目錄,看你自己的需求)
ForceCommand internal-sftp
AllowTcpForwarding no
·4. 目錄權限設置(最關鍵的一步)
/data/web/application/test此目錄屬主必須爲root,權限必須小於755,否則無法使用sftp進行通信