2021-03-26记录centos8安装配置ftp,包括安装telnet服务和xinetd服务

步骤一:检查是否安装vsftpd并安装

1.安装vsftpd

# 首先要查看你是否安装vsftpd

rpm -qa | grep vsftpd

vsftpd-3.0.2-10.el7.x86_64

# 显示也就安装成功了!直接进入下一环节吧

# 安装vsftpd

yum install -y vsftpd

2.运行以下命令设置FTP服务开机自启动。

systemctl enable vsftpd.service

3.运行以下命令启动FTP服务。

systemctl start vsftpd.service

4.运行以下命令查看FTP服务监听的端口。

netstat -antup | grep ftp

出现如下图所示界面,表示FTP服务已启动,监听的端口号为21。

ftp port

此时,vsftpd默认已开启本地用户模式,您还需要继续进行配置才能正常使用FTP服务。

步骤二:配置vsftpd

本示例提供两种方式配置vsftpd:匿名用户模式或本地用户模式

方式一:配置匿名用户上传文件权限。

  1. 修改配置文件/etc/vsftpd/vsftpd.conf。
    1. 运行以下命令打开配置文件。
      vim /etc/vsftpd/vsftpd.conf
    2. 按i进入编辑模式。
    3. 修改配置项信息。
      • 将模式修改为匿名用户模式:
        • anonymous_enable=NO修改为anonymous_enable=YES
        • local_enable=YES修改为local_enable=NO
      • 将匿名上传权限的注释去掉,修改为anon_upload_enable=YES

      修改后的配置文件,如下图所示。vsftpd.conf

    4. 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。
  2. 运行以下命令更改/var/ftp/pub目录的权限,为FTP用户添加写权限。/var/ftp/pub为FTP服务默认的文件目录。
    chmod o+w /var/ftp/pub/
  3. 运行以下命令重新加载配置文件。
    systemctl restart vsftpd.service

方式二:配置本地用户访问FTP服务器。

  1. 运行以下命令为FTP服务创建一个Linux用户。本示例中,该用户名为ftptest。
    adduser ftptest
  2. 运行以下命令修改ftptest用户的密码。
    passwd ftptest
  3. 运行以下命令创建一个供FTP服务使用的文件目录。
    mkdir /var/ftp/test
  4. 运行以下命令更改/var/ftp/test目录的拥有者为ftptest。
    chown -R ftptest:ftptest /var/ftp/test
  5. 修改vsftpd.conf配置文件。
    1. 运行以下命令打开配置文件。
      vim /etc/vsftpd/vsftpd.conf
    2. 按i进入编辑模式。
    3. 根据如下内容,修改或添加相关配置参数。

      注意 修改和添加配置文件内的信息时,请注意格式问题。例如,添加多余的空格会造成无法重启服务的结果。

      #除下面提及的参数外,其他参数保持默认值即可。
      
      #修改下列参数的值
      #禁止匿名登录FTP服务器
      anonymous_enable=NO
      #允许本地用户登录FTP服务器
      local_enable=YES
      #监听IPv4 sockets
      listen=YES
      #在行首添加#注释掉以下参数,关闭监听IPv6 sockets
      #listen_ipv6=YES
      
      #添加下列参数
      #设置本地用户登录后所在目录
      local_root=/var/ftp/test
      #全部用户被限制在主目录
      chroot_local_user=YES
      #启用例外用户名单
      chroot_list_enable=YES
      #指定例外用户列表文件,列表中用户不被锁定在主目录
      chroot_list_file=/etc/vsftpd/chroot_list
      #开启被动模式
      pasv_enable=YES
      allow_writeable_chroot=YES
      #本教程中为Linux实例公网IP
      pasv_address=<FTP服务器公网IP地址>
      #设置被动模式下,建立数据传输可使用的端口范围的最小值
      pasv_min_port=<port number>
      #设置被动模式下,建立数据传输可使用的端口范围的最大值
      pasv_max_port=<port number>

      说明 建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。

    4. 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。
  6. 创建chroot_list文件,并在文件中写入例外用户名单。

    说明 没有例外用户时,也必须创建chroot_list文件,内容可为空。

    1. 运行以下命令创建chroot_list文件。
      vim /etc/vsftpd/chroot_list
    2. 按i进入编辑模式。
    3. 输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。
    4. 按Esc退出编辑模式,然后输入:wq并回车以保存并关闭文件。

   7.运行以下命令重启vsftpd服务。

systemctl restart vsftpd.service

步骤三:客户端测试

    这里用到了filezilla,下载并安装https://www.filezilla.cn/download/client

但是到了这步我连接失败

如果连接成功,后边的就不用看了。

——————————————————————————————————————————————————————————————————————————————————————————

以下都是为了解决FTP连接不到的问题。

端口21连接不到服务器,但是端口22可以连接到。

步骤一:在服务器端用telnet命令查看是否正常

telnet <换成自己服务器IP> 21

发现自己的cenos系统没有安装telnet服务

1.检查是否安装telnet和telnet-server

rpm -qa | grep telnet

rpm -qa telnet-server

上两张图表示安装了,如果没安装没有任何反应。

2.如果安装了忽略,如果没安装 就执行安装了

yum -y install telnet

yum install telnet-server  

PS:telnet-server服务启动需依赖xinetd服务,这里我们继续安装xinetd服务

1.查看是否安装了xinetd

rpm -qa | grep xinetd

上图为已安装

2.安装xinetd

yum -y install xinetd

安装完成后准备开启服务,再开启服务之前,要先去修改文件/etc/xinetd.d/telnet来开启服务  这个文件可能不存在 直接vim创建就可以了

修改参数  disable = yes 为 disable = no

文件完整内容为

# default: yes
# # description: The telnet server servestelnet sessions; it uses \
# #      unencrypted username/password pairs for authentication.
service telnet

{
  flags           = REUSE
  socket_type     = stream
  wait            = no
  user            = root
  server          =/usr/sbin/in.telnetd
  log_on_failure  += USERID
  disable         = no
}
保存后退出。

3.启动xinetd 服务

在centos7之前: server xinetd restart 

在centos7中(无xinetd的service启动项):systemctl restart xinetd.service

4.看看我们是不是成功了

因为走的是TCP的23号端口

netstat -tnl |grep 23 

以上为telnet服务和xinetd服务安装

————————————————————————————————————————————————————————————————————————————————

到这里还是链接不上,后来一顿百度后,发现是阿里云安全组作怪。

设置安全组

搭建好FTP站点后,在实例安全组的入方向添加规则并放行下列FTP端口。具体步骤,请参见添加安全组规则

说明 大多数客户端位于局域网中,IP地址是经过转换的,因此ipconfig或ifconfig命令返回的IP不一定是客户端的真实公网IP地址。若后续客户端无法登录FTP服务器,请重新确认其公网IP地址。

FTP被动模式需要开放端口,配置详情如下表所示。

 
规则方向授权策略协议类型端口范围授权对象
入方向允许自定义TCP21/21所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。

允许所有客户端访问时,授权对象为0.0.0.0/0。

入方向允许自定义TCP不同模式的开放端口范围如下:
  • 匿名用户模式:1024/65535
  • 本地用户模式:配置文件/etc/vsftpd/vsftpd.conf中配置项pasv_min_port和pasv_max_port之间的端口。即pasv_min_port/pasv_max_port
所有要访问FTP服务器的客户端公网IP地址,多个地址之间用逗号隔开。

允许所有客户端访问时,授权对象为0.0.0.0/0。

 

因为我选择的是本地用户模式,所以我安全策略除了添加了个21/21还加了vsftpd.conf中设置的50000/50010

配置完后,发现可以连接了,但是又遇到个坑,到读取目录列表...这步之后,一直提示服务器发回了不可路由的地址。使用服务器地址代替。

按照网上的各种方法一顿尝试后还是不行,无奈之下提交了阿里云工单。

最后结果是需要在安全策略规则组中添加1024/65535这个端口范围,最终连接成功了。

测试上传下载都正常,虽然问题最终解决了,但是为什么文档中写着匿名才需要配置1024/65535端口,而本地用户是设置vsftpd.conf中设置的min_port和max_port范围,根据文档中的配置无法成功,步骤二之后的FTP配置是阿里云官网的FTP配置文档,这里要想吐槽一下,太坑了真是~~~有知道这是为什么的小伙伴可以评论解释一下,在此谢谢了~!

 

——————————————————————————————————————————————————————————————————————————————————————

又遇到新问题,回来补充一下,上面的内容是服务器linux防火墙没开启,开启后FTP又连接不上了,连接超时,经过一顿查询解决了,把解决方法记录下来

顺便上面那个为什么要配置1024/65535端口问题我提问阿里云工单得到答案了,说是被动模式下的FTP必须在安全组配置1024/65535这个范围端口。

步骤一:在防火墙firewalld开放21端口
# 开放端口
firewall-cmd --zone=public --add-port=21/tcp --permanent

# 重新载入
firewall-cmd --reload

# 查看所有开放的端口
firewall-cmd --zone=public --list-ports

做完这步后,可以连接上了,但是又出现服务器发回了不可路由的地址。使用服务器地址代替这个问题

接着往下操作。

步骤二:在防火墙iptables开放21端口

查询iptables服务状态

systemctl status iptables.service

在操作iptables服务时提示服务不存在

 

安装iptables-service

yum install iptables-services

启用iptables

systemctl enable iptables

管理iptablse 服务(这步这里我报错了,尝试跳过了这步,没有做这步)

systemctl [stop|start|restart] iptables

关闭selinux,修改/etc/sysconfig/selinux文件

SELINUX=disabled 
SELINUXTYPE=targeted

添加21端口在/etc/sysconfig/iptables

iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT

网上还有一种写法是

iptables -I INPUT 5 -p tcp --dport 21 -j ACCEPT

开始我用这个命令,报错什么数太大,网上给我答案是把5换成1,试了下好像可以,但是我还是用了上面那个命令操作的。

重启iptables

sudo service iptables restart

操作完后FTP又正常连接了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值