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。
OpenSSH 4.8p1以上的版本才支援SFTP所需的chroot等指令,我的CentOS 5.X伺服器的OpenSSH版本過低,需要先對OpenSSH升級。
提示:在升級OpenSSH前,為防止意外出現,我臨時開啟了telnet,通過telnet串連到伺服器後再進行操作(升級完記得關閉telnet)。
service sshd stop #關閉sshd
mv /etc/ssh/sshd_config /etc/ssh/sshd_config_bak #將原有的設定檔案改名
wget http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-4.9p1.tar.gz
tar zxvf openssh-4.9p1.tar.gz
cd openssh-4.9p1
./configure --prefix=/usr --sysconfdir=/etc/ssh
make
make install
如果上面的過程很順利的話,下面這行命令應該可以正常啟動sshd
service sshd start
接下來配置sshd_config,設定SFTP的使用者和目錄
#Subsystem sftp /usr/libexec/sftp-server
Subsystem sftp internal-sftp
Match User xxxxxx
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory /var/htdocs
上面設定中“xxxxxx”替換為你系統中專門用於SFTP的使用者名稱即可,這裡我用的是User,也可以用Group來指定一個使用者組。
設定好後重啟sshd即可。