1. 程式人生 > >在Linux上配置SFTP服務

在Linux上配置SFTP服務

本文章參考部落格地址為https://blog.csdn.net/wbiblem/article/details/72082138,感謝原作者

SFTP介紹

sFTP(安全檔案傳輸程式)是一種安全的互動式檔案傳輸程式,其工作方式與 FTP(檔案傳輸協議)類似。 然而,sFTP 比 FTP 更安全;它通過加密 SSH 傳輸處理所有操作。 它可以配置使用幾個有用的 SSH 功能,如公鑰認證和壓縮。 它連線並登入到指定的遠端機器,然後切換到互動式命令模式,在該模式下使用者可以執行各種命令。
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在Linux上的配置

一、檢視ssh版本
sftp是基於ssh協議的,首先檢視ssh版本,openssh-server版本至少得是4.8p1, 因為配置許可權需要版本新增的新配置項ChrootDirectory來完成。

[[email protected] ~]# ssh -V
OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013

二、建立使用者和組
建立sftp組和mysftp使用者

groupadd sftp
mkdir -p /data/sftp
useradd -g sftp -s /sbin/nologin -d /data/sftp/mysftp mysftp

三、設定使用者密碼

[[email protected] ~]# passwd mysftp
更改使用者 mysftp 的密碼 。
新的 密碼:
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。

四、給家目錄更改屬主並授權
家目錄屬主必須是root,許可權可以是755或者750

cd /data/sftp
chown root:sftp mysftp
chmod 755 -R mysftp

五、在家目錄下建立上傳目錄upload,並修改授權

cd /data/sftp/mysftp
mkdir upload
chown mysftp:sftp upload

如果不把upload目錄的屬主改成mysftp,那麼mysftp使用者將沒有上傳許可權。
六、修改配置檔案/etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server #註釋掉這行
在底部加上下面6行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u #設定屬於使用者組sftp的使用者訪問的根資料夾
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no #設定不允許SSH的X轉發
七、重啟sshd服務

service sshd restart

八、驗證是否能上傳

[[email protected] ~]# sftp [email protected]
Connecting to 192.168.0.12...
[email protected]'s password: 
sftp> cd upload
sftp> put git.zip
Uploading git.zip to /upload/git.zip
git.zip                                                                                                                                                                        100% 8678KB   8.5MB/s   00:00    
sftp> ls
git.zip  
sftp> pwd
Remote working directory: /upload

驗證成功,能夠把git.zip上傳到upload目錄中