yum install vsftpd -y
systemctl stop firewalld 关闭防火墙
或者配置防火墙规则 运行21端口通过
[root@localhost ~]# firewall-cmd –zone=public –add-port=21/tcp –permanent
success
[root@localhost ~]# systemctl reload firewalld
[root@localhost ~]# firewall-cmd –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports: 21/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
配置selinux
setenforce 0
或者修改配置文件
[root@localhost ~]# vim /etc/selinux/config
#SELINUX=enforcing
SELINUX=disabled
改为disabled
这里需要注意,如果从强制模式(enforcing)、宽容模式(permissive)切换到关闭模式(disabled),或者从关闭模式切换到其他两种模式,则必须重启 Linux 系统才能生效,但是强制模式和宽容模式这两种模式互相切换不用重启 Linux 系统就可以生效。这是因为 SELinux 是整合到 Linux 内核中的,所以必须重启才能正确关闭和启动。而且,如果从关闭模式切换到启动模式,那么重启 Linux 系统的速度会比较慢,那是因为需要重新写入安全上下文信息。
修改vsftpd的配置文件
anonymous_enable=YES #允许匿名用户登录
anon_upload_enable=YES #运行匿名用户上传文件
anon_mkdir_write_enable=YES 运许匿名用户创建文件
anon_other_write_enable=YES
如 果设为YES,则允许匿名登入者更多于上传或者建立目录之外的权限,譬如删除或者重命名。(如果anon_upload_enable=NO,则匿名用户 不能上传文件,但可以删除或者重命名已经存在的文件;如果anon_mkdir_write_enable=NO,则匿名用户不能上传或者新建文件夹,但 可以删除或者重命名已经存在的文件夹。)默认值为NO。
anon_umask=022 #匿名用户默认权限
no_anon_password=NO
若是启动这项功能,则使用匿名登入时,不会询问密码。默认值为NO。
重启服务
systemctl restart vsftpd
客户端链接
匿名用户使用的登陆名为ftp或anonymous,口令为空;
[root@localhost tmp]# ftp 192.168.137.105
Connected to 192.168.137.105 (192.168.137.105).
220 (vsFTPd 3.0.2)
Name (192.168.137.105:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir 7
550 Create directory operation failed.
ftp> cd pub
250 Directory successfully changed.
ftp> mkdir 7
257 “/pub/7” created
ftp> get hosts
local: hosts remote: hosts
227 Entering Passive Mode (192,168,137,105,45,114).
150 Opening BINARY mode data connection for hosts (158 bytes).
226 Transfer complete.
158 bytes received in 7.2e-05 secs (2194.44 Kbytes/sec)
ftp> put file1
local: file1 remote: file1
227 Entering Passive Mode (192,168,137,105,247,219).
150 Ok to send data.
226 Transfer complete.
ftp>
错误 227 无路由
当你只是设置防火墙规则而不是直接停止防火墙时
会报错227
解决 ftp>passive
关闭pasv模式
开启则是再次passive
ftp> get hosts
local: hosts remote: hosts
227 Entering Passive Mode (192,168,137,105,157,90).
ftp: connect: 没有到主机的路由
ftp> passive
Passive mode off.
ftp> get hosts
local: hosts remote: hosts
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for hosts (158 bytes).
226 Transfer complete.
158 bytes received in 7.3e-05 secs (2164.38 Kbytes/sec)
ftp>
FTP服务的两种工作模式:
port方式(主动模式), 连接过程:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立一条数据链路来传送数据。
pasv方式 ( 被动模式 ), 连接过程:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链 路来传送数据。
由于服务器上的FTP进行TCP/IP筛选,仅允许特定的端口可以被客户端连接,所以无法使用PASV方式。找到了原因,解决办法也很简单,只需要关闭客户端的PASV方式,强制其用PORT方式访问服务器即可。
原创文章,作者:Carrie001128,如若转载,请注明出处:https://blog.ytso.com/245623.html