Ubuntu9.10安装proFTPd支持SFTP
目的
1)支持SFTP协议
2)不采用系统帐号验证方式,改为数据库MySQL验证
3)数据库中不保存密码,只保存经过sha256算法加密过的可打印16位小写字符串,系统中还需保存一个salt文件
4)数据库中指定用户目录,proFTPd能够动态创建用户目录
修改ssh服务端口号为21
修改文件中的配置/etc/ssh/sshd_config
然后重新启动ssh服务
sudo /etc/init.d/ssh restart
这不会影响ssh的使用,客户端需要用-p参数指明端口号
创建ftp系统帐号
- sudo groupadd ftp
- sudo useradd -u 1005 -s /bin/false -d /bin/null -c "proftpd user" -g ftp ftpuser
- sudo passwd ftp
依赖库
确保UBuntu系统中已经有/usr/include/mysql/mysql.h和/usr/lib/libmysqlclient.a
获得源代码编译安装
注意,系统中不能存在其他占用22端口的程序。
- cd /usr/src
- sudo wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3rc3.tar.gz
- sudo tar xvzf proftpd-1.3.3rc3.tar.gz
- cd proftpd-1.3.3rc3
- install_user=ftp install_group=ftp sudo ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/run --mandir=/usr/local/man --without-pam --disable-auth-pam --enable-openssl --with-modules=mod_ratio:mod_readme:mod_sftp:mod_sql:mod_sql_passwd:mod_sql_mysql --with-includes=/usr/include/mysql --with-libraries=/usr/lib
- sudo make
- sudo make install
编译成功后,当前目录和/usr/sbin/下都有proftpd程序。
修改配置
修改配置文件/etc/proftd.conf文件,在文件开头添加如下配置
- ServerName "ProFTPD Default Installation"
- ServerType standalone
- DefaultServer on
- RootLogin off
- RequireValidShell off
- DefaultRoot ~
- IdentLookups off
- UseReverseDns off
- CreateHome on
- SQLPasswordEngine on
- SQLPasswordEncoding hex
- SQLPasswordSaltFile /home/chenshu/salt
- # Other mod_sql configuration here
- SQLBackend mysql
- SQLAuthTypes SHA256
- SQLAuthenticate users*
- SQLConnectInfo databaseName @IP :3306 username password 30
- SQLDefaultUID 1003
- SQLDefaultGID 1005
- SQLUserInfo users login password_hash NULL NULL homedir NULL
- SFTPEngine on
- SFTPLog /etc/sftp.log
- SFTPAuthMethods password
- # Host keys, for server host authentication
- SFTPHostKey /etc/ssh/ssh_host_rsa_key
- SFTPHostKey /etc/ssh/ssh_host_dsa_key
# Port 21 is the standard FTP port.
Port 22
创建数据表
- CREATE TABLE `users` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `login` varchar(16) NOT NULL,
- `password_hash` varchar(80) NOT NULL,
- `homedir` varchar(1024) NOT NULL,
- PRIMARY KEY (`id`)
- )
制造数据:
下面是Ruby代码:
require 'digest/sha2'
puts Digest::SHA256.hexdigest("770328" + "7wjCeqX/")
"770328"是用户密码
"7wjCeqX/"是salt,也应该保存在/home/chenshu/salt文件中。请不要在文件中添加换行符。
算出的字符串,保存到password_hash列中。
homedir字段保存用户目录,如果第一次登录时没有,会自动创建。
最后启动服务:
- chenshu@chenshu-desktop:/usr/sbin$ sudo ./proftpd
测试,通过。这样就完成了Ubuntu9.10下proFTPd的安装。
【编辑推荐】