1、登录
先检查服务器有没有安装过ftp : rpm -qa |grep vsftpd
安装命令 : yum install vsftpd
如果没有yum命令,可以使用 rpm 具体百度
2、修改ftp配置文件
我这里使用的是禁止匿名登录
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_enable=YES
userlist_file=/etc/vsftpd/vsftpd.user_list
userlist_deny=NO
allow_writeable_chroot=YES
修改ftp目录 :
local_root=/aaaaaaa/bbb/ccccccc
anon_root=/aaaaaaa/bbb/ccccccc
在 /etc/vsftpd/user_list 文件中 添加授权的用户
修改ftp根目录的权限
3、测试
初步:
在linux命令窗内,输入 ftp localhost
输入你授权的用户名、密码。
提示 Login successful 初步成功。
使用IP登录
使用 exit 先退出刚刚的ftp模式。
在linux命令窗内,输入 ftp 服务器IP地址,如:
ftp 192.168.1.11
如果提示输入用户名、密码,即成功。
没反应,或者提示连接超时。可能有如下几种问题
端口问题
查看服务器上ftp使用是什么端口号,netstat -utlpn | grep vsftp
如图,我使用的是默认的21
可以通过修改配置文件conf,添加
listen_port=8080 // 8080只是举例,请改成任意不重复的端口号
同时修改
vim /etc/services
在services中,找到ftp相关的两个,修改为8080
# 21 is registered to ftp, but also used by fsp
ftp 8080/tcp
ftp 8080/udp fsp fspd
防火墙问题
firewalld 、iptables两个常用的防火墙,可以通过命令控制。
先查看服务器上开启了吗
再使用对应的命令开放20、21端口,就好了
也可以通过服务器后台控制中心,调配。
4、JAVA
<dependency><!-- 用于 FTP下载 -->
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>1.4.1</version>
</dependency>
/**
* 本地字符编码
*/
public static String LOCAL_CHARSET = "GBK";
// FTP协议里面,规定文件名编码为iso-8859-1
public static String SERVER_CHARSET = "ISO-8859-1";
/**
* 建立连接
* @param ftp
* @return
*/
public static boolean ftpConnect(FTPClient ftp){
int reply;
logger.info(" --- 开始建立ftp连接 --- ");
try {
ftp.connect("服务器IP地址", "端口号");// 连接FTP服务器
ftp.login("用户名", "密码");// 登录
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(rep