天天看點

sftp伺服器搭建

 注:本文搭建sftp的系統為CentOS 7 以上

sftp伺服器兩種搭建方式

  1、直接在系統上建立一個使用者即可,此種方式最簡單,但最不安全,使用者sftp登陸之後可以随意切換目錄,切使用者可以ssh登陸到系統,很不安全,生産環境中沒這麼幹的,故不詳細介紹了。

  • 首先建立sftp登陸使用者

useradd stp-u

echo sftp-u | passwd --stdin sftp-u

  • 配置/etc/ssh/sshd_config

注釋掉

#Subsystem sftp /usr/libexec/openssh/sftp-server

添加如下

Subsystem sftp internal-sftp

Match User sftp-u

ChrootDirectory /opt/upload

ForceCommand internal-sftp

  AllowTcpForwarding no

  X11Forwarding no

ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,屬主和屬組必須是root;

ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,隻有屬主能擁有寫權限,也就是說權限最大設定隻能是755

但如目錄權限由于實際環境的原因不能修改權限的話,也可以通過軟連接配接實作,但最底層的目錄的屬主任然為root,權限最大任然是755

修改目錄權限

chown root.sftp-u test/

重新開機服務

service sshd reload

service sshd restart

登陸

sftp -P 22 ​​[email protected].​​xxx

顯示本地目錄

sftp> lls

1.json 2.json 3.json ls.txt put.sh

顯示遠端目錄

stp> ls

1.json

上傳

從本地上傳檔案到遠端,本地不指定目錄預設目前目錄,遠端不指定目錄就是上傳到根目錄下

sftp> put 1.json

Uploading 1.json to /1.json

remote open("/1.json"): Permission denied

提示操作遠端權限失敗,因為這是往遠端寫,是以檢查遠端操作的目錄是否有寫權限,發現sftp-u使用者對遠端預設目錄沒有寫權限

于是給sftp-u使用者指定的根目錄加上寫權限,service sshd restart 發現還是不能上傳。

發現需要在根目錄下建立一個子目錄,并且給上sftp-u使用者寫權限,才可以上傳

chown root.sftp-u /root/upload/

mkdir /root/upload/file

chown sftp-u:sftp-u /root/upload/file

chmod 775 /root/upload/file

下載下傳

總結

#file server

useradd sftp-u

echo sftp-u | passwd --stdin sftp-u

mkdir -p /root/upload/

chown root.sftp-u /root/upload/

mkdir /root/upload/file

chown sftp-u:sftp-u /root/upload/file

chmod 775 /root/upload/file

sed -i 's/Subsystem\tsftp\t\/usr\/libexec\/openssh\/sftp-server/#Subsystem\tsftp\t\/usr\/libexec\/openssh\/sftp-server/g' /etc/ssh/sshd_config

echo -e 'Subsystem sftp internal-sftp

Match User sftp-u

\tChrootDirectory /root/upload

\tForceCommand internal-sftp

\tAllowTcpForwarding no

\tX11Forwarding no' >> /etc/ssh/sshd_config