本文介绍 Apache Ftp Server 应用的部署过程及 Java 操作 FTP、SFTP 的流程,主要用于有操作 FTP、SFTP 的业务场景。
SFTP 环境容易得到,凡事 Linux 主机开通 SSH 连接就可以通过 SFTP 操作,但是,FTP 环境可能需要自己搭建,本文介绍使用开源 FTP Server 的过程。
Apache 旗下的 Apache Ftp Server ,可以用于搭建自己的 FTP 测试环境。
主要需要关注三点:
writepermission
写权限、密码 userpassword
这个是如果需要加密,则加密算法是 MD5 值。<file-user-manager file="./res/conf/users.properties"
encrypt-passwords="clear"/>
bin/ftpd.sh res/conf/ftpd-typical.xml &
使用 Java 的 FTP 工具包操作目标服务器的文件时,需要注意两点:
$FTP_HOME/data
。Apache 的 FTPServer 的密码竞然是 MD5,这一点没想到,但是也是挺简单的,文档也没有说明时这个算法,起初还以为是什么复杂的加密算法呢。百度那个密码值发现是 admin 的 MD5 ,自定义了一个密码测试,果然如此。
另外,不需要真的创建系统帐号,只要 user.properties 配置了帐号信息,就可以直接用这些帐号访问 FTP 服务了。
第三点,需要注意帐号的权限,默认的匿名帐号是没有写入权限的 writepermission
为否:
ftpserver.user.anonymous.userpassword=
ftpserver.user.anonymous.homedirectory=./res/home
ftpserver.user.anonymous.enableflag=true
ftpserver.user.anonymous.writepermission=false
按照匿名帐号配置是没有写入权限。