sftp使用遇到的坑


sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的網絡的加密方法。sftp 與 ftp 有着幾乎一樣的語法和功能。SFTP 為 SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟件包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的連接和答復操作,所以從某種意義上來說,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP同樣是使用加密傳輸認證信息和傳輸的數據,所以,使用SFTP是非常安全的。但是,由於這種傳輸方式使用了加密/解密技術,所以傳輸效率比普通的FTP要低得多,如果您對網絡安全性要求更高時,可以使用SFTP代替FTP。

sftp另個一好處是不用安裝另外的軟件

1、創建sftp數據存放目錄

# mkdir -p /data/sftp

2、創建sftp組

# groupadd sftp

3、創建用戶並加入組

# useradd -m sftp1 -g sftp -s /sbin/nologin -d /data/sftp/sftp1
# passwd sftp1

4、修改配置文件

# vim /etc/ssh/sshd_config
Subsystem      sftp    /usr/libexec/openssh/sftp-server      注釋掉這一行
添加如下行
Subsystem sftp internal-sftp       # 指定使用sftp服務使用系統自帶的internal-sftp
Match Group sftp                   # 匹配sftp組的用戶,若要匹配多個組,可用逗號分開
ChrootDirectory /data/sftp/%u      # 限制用戶的根目錄,%u代表匹配到的用戶名。sftp登陸后用戶只能在此目錄下活動
ForceCommand internal-sftp         # 只能用於sftp登錄
AllowTcpForwarding no              # 禁止用戶使用端口轉發
X11Forwarding no                   # 禁止用戶使用端口轉發

 5、重啟sshd

# systemctl restart sshd

 6、測試

# sftp sftp1@127.0.0.1

 

 

 出現報錯。

這是因為

ChrootDirectory /data/sftp/%u  

這個參數導致的。ChrootDirectory設置的目錄/data/sftp/sftp1的所有者必須是root,並且該目錄的上級目錄//data/sftp的所有者也必須是root. 
而且只有所有者擁有寫權限,也就是說他們的權限最大設置只能是755。

修改/data/sftp/sftp1的所有者和權限

# chown -R root:sftp /data/sftp/sftp1
# chmod -R 755 /data/sftp/sftp1

重新登陸成功。但是這里還是有一個坑。由於之前我們給/data/sftp/sftp1設置的權限是755,所以不能寫入文件。

其實這里之前配置文件應該換一種配置

ChrootDirectory /data/sftp/          # 寫到用戶家目錄上一層目錄即可
ForceCommand internal-sftp -d/%u        

改回/data/sftp/sftp1所有者


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM