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


<IfModule mod_sql_passwd.c>
    SQLPasswordEngine on
    SQLPasswordEncoding hex
    SQLPasswordSaltFile /home/chenshu/salt
</IfModule>

<IfModule mod_sql.c>
    # 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                                                                                                 
</IfModule>

<IfModule mod_sftp.c>
    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
</IfModule>


# 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


测试,通过。

你可能感兴趣的:(ubuntu)