ftp无法连接虚拟机_虚拟机安装VSFTPD服务

eed2dc2a1db878f14781f556daaf2596.png

1、虚拟机安装VSFTP服务

  1. 安装vsftpd组件
    yum -y install vsftpd
    配置文件位于 /etc/vsftpd/vsftpd.conf
  2. 添加Linux用户
    此用户用于登录ftp服务器
    useradd ftpuser
    这时会在/home 目录下创建一个目录ftpuser
  3. 给用户设置密码
    password ftpuser
    输入密码
  4. 防火墙开启21端口
    因为 ftp 默认的端口为 21,而 centos 默认是没有开启的
    所以要修改 iptables 文件vim /etc/sysconfig/iptables
    在行上面有 22 -j ACCEPT 下面另起一行输入跟那行差不多的,只是把 22 换成 21,然后:wq 保存。

    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
  5. 重启 iptables
    service iptables restart
  6. 修改selunux
    外网是可以访问上去了,可是发现没法返回目录(使用 ftp 的主动模式,被动模式还是无法访问),也上传不了,因为 selinux 作怪了。修改 selinux:执行以下命令查看状态:
    [root@bogon ~]# getsebool -a | grep ftp
    allow_ftpd_anon_write --> off
    allow_ftpd_full_access --> off
    allow_ftpd_use_cifs --> off
    allow_ftpd_use_nfs --> off
    ftp_home_dir --> off
    ftpd_connect_db --> off
    ftpd_use_passive_mode --> off
    httpd_enable_ftp_server --> off
    tftp_anon_write --> off
    执行上面命令,再返回的结果看到两行都是 off,代表没有开启外网的访问
    [root@bogon ~]# setsebool -P allow_ftpd_full_access on
    [root@bogon ~]# setsebool -P ftp_home_dir on
  7. 关闭匿名访问
    修改配置vsftpd文件
    vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=YES
    改为
    anonymous_enable=NO
  8. 重启 vsftpd ftp服务
    service vsftpd restart
  9. 设置开启启动ftp服务
    chkconfig vsftpd on

2、图片上传

2.1 使用 FileZilla 上传图片

2.2 使用 FTP 协议访问图片服务器

FTP 协议的 URL 格式:

ftp://username:userpassword@IP/路径/图片名称

2.3 FTPClient 工具

FTPClient 是 Apache 提供的一个开源的基于 JAVA 语言的 FTP 客户端工具。FTPClient 位于 Apache 的 commons-net 项目中。

2.3.1 FTPClient的使用

pom.xml中加入:

<dependencies>
        <!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.3</version>
        </dependency>
    </dependencies>

测试代码:

        //创建FTPClient对象
        FTPClient ftp = new FTPClient();
        
        //连接服务器
        ftp.connect("host", port);
        
        //登录。用户名名和密码
        ftp.login("username", "password");
        
        //上传的文件
        InputStream is = new FileInputStream(sourece);
        
        //指定上传路径
        ftp.changeWorkingDirectory(path);
        
        //开启字节流传输
        ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
        
        //文件上传
        ftp.storeFile(filename, is);
        //退出登录
        ftp.logout();
        System.out.println("ok");
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值