前言
自己经常使用虚拟机做各种开发测试,每次安装好虚拟机后都需要配置环境,安装各种软件,有时候虚拟机的网络并不怎么样,甚至根本不能上网,为了上传和下载文件到虚拟机,一般就是使用ftp了。
同样可以实现文件传输的有:
- SecureXFTP:很好用,上传下载很方便,不需要在服务端安装什么程序,缺点是要收费。
- puttyPSFTP:开源免费,但是只能用指令操作,并且没有指令自动完成,用起来不是很方便。
上面两个工具都可以实现在宿主机的window和虚拟机的文件交互,如果不想的window上安装软件的话,可以使用window自带的ftp命令来实现。
不过本质上和使用PSFTP是一样的,也是只能使用指令,没有UI,并且没有命令自动完成。
虚拟机的操作系统是CentOS7
安装FTP服务
- 检查是否已按安装FTP服务:
$> rpm -qa|grep vsftpd
如果出现ru如下结果说明已安装:
$> rpm -qa|grep vsftpd
vsftpd-3.0.2-21.el7.x86_64
如果还没安装,那就使用如下命令安装:
$> yum install vsftpd
- 配置FTP服务
修改/etc/vsftpd/vsftpd.conf
文件:
$> vim /etc/vsftpd/vsftpd.conf
检查如下几个配置项:
local_enable=YES
write_enable=YES
local_umask=022
pam_service_name=vsftpd
userlist_enable=YES
确认上述配置即可。
注意: 如果需要配置不允许用户修改FTP目录的话,可以使用
chroot_local_user=YES
这个配置,默认情况下这个配置是注释掉的,打开这个配置的话,需要指定ftp的根目录并且该目录必须是不可写的状态。
配置防火墙
作为测试用的虚拟机,一般直接关闭防火墙就行了:
$> service iptables stop
如果不想关闭防火墙,则需要添加FTP模块和开放ftp端口21到防火墙:
- 添加ip_conntrack_ftp模块
$> vim /etc/sysconfig/iptables-config
添加如下一行:
IPTABLES_MODULES="ip_conntrack_ftp"
- 打开21端口
$> vim /etc/sysconfig/iptables
添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
- 重启防火墙
$> service iptables restart
启动FTP服务
配置全部完成,现在可以启动FTP服务了。
- 设置FTP开机自启动:
$> chkconfig vsftpd on
- 启动FTP服务:
$> service vsftpd start
在CentOS7下,也可以使用:
$> systemctl restart vsftpd.service
来启动。
关闭SELinux
启动FTP之后,在window的cmd终端下输入:
C:> ftp ${ip}
连接FTP,此时可能会出现了错误503,应该是selinux设置的问题,使用如下命令检查:
$> getsebool -a |grep ftp
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
我们只要打开ftp_home_dir的值开启为on,allow_ftpd_full_access也一同开启即可。
$> setsebool -P ftp_home_dir 1
$> setsebool -P allow_ftpd_full_access 1
至此应该可以连接了。