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即可。