FTP服务器部署与优化+Received message too long报错

ftp就是进行数据传输的,vsftpd是一种更安全的数据传输,优化FTP服务器,就是做好对实体用户(user)、匿名用户(anonymous)以及特殊需求用户的管理。那么可以对这些用户限制什么或者说开放什么,换句话说就是ftp有什么功能可以使用。这些我写在了第六个目录下面,可以根据自己需求查看。

一、ftp的数据传输简介

1、功能简介

  • 不同等级的用户权限不同:user、guest、anonymous
    user(实体用户):指的是服务器中存在的用户,就是说你可以 ssh 进入的用户。当你使用这个用户登录 ftp 那么你进入到的是这个这个用户的家目录。实体用户有比较完整地权限,可以进行更多操作。
    guest(访客):这个我还没有遇到过,多半是由于服务器提供了类似个人Web首页的功能给一般用户,那么这些用户需要管理自己的网页空间。这个时候就用到了guest。就是说在/var/ftp下创建一个/var/ftp/guest1目录,这个目录就是这个访客的家目录。
    anonymous(匿名用户):一般给匿名用户只开放下载功能,其默认进入的是/var/ftp/这个目录。
  • 命令记录与日志文件记录
    FTP可以利用系统的syslogd来进行数据的记录,而记录的数据包括了用户曾经使用过的命令与用户传输数据(传输时间,传输大小等)的记录,所以可以很轻松地在/var/log/里面找到各项日志信息。
  • 限制用户活动的目录:(change root,简称 chroot)
    作用:让实体用户只能访问自己的家目录,不能在/etc或者其他目录下走动。

2、主动连接用到的端口号

  • 命令通道:默认port 21
  • 数据传输通道:默认port 20

3、工作流程

  1. 主动连接(默认连接方式)
    在这里插入图片描述

1)建立命令通道的连接

如上图所示,客户端会随机取一个大于 1024 以上的埠口 (port AA) 来与 FTP
服务器端的 port 21 达成联机, 这个过程当然需要三向交握了!达成联机后客
户端便可以透过这个联机来对 FTP 服务器下达指令, 包括查询文件名、下载、
上传等等指令都是利用这个通道来下达的;

2)通知FTP服务器端使用Active且告知连接的端口号

FTP 服务器的 21 埠号主要用在命令的下达,但是当牵涉到数据流时,就不是使
用这个联机了。 客户端在需要数据的情况下,会告知服务器端要用什么方式来
联机,如果是主动式 (active) 联机时, 客户端会先随机启用一个埠口 (图
21.1-1 当中的 port BB) ,且透过命令通道告知 FTP 服务器这两个信息,并等
待 FTP 服务器的联机;

3)FTP服务器主动向客户端连接

FTP 服务器由命令通道了解客户端的需求后,会主动的由 20 这个埠号向客户端
的 port BB 联机, 这个联机当然也会经过三向交握啦!此时 FTP 的客户端与
服务器端共会建立两条联机,分别用在命令的下达与数据的传递。 而预设 FTP
服务器端使用的主动联机埠号就是 port 20 啰!

  1. 被动连接

在这里插入图片描述
1)用户与服务器建立命令通道

同样的需要建立命令通道,透过三向交握就可以建立起这个通道了。

2)客户端发出PASV的连接要求

当有使用数据信道的指令时,客户端可透过命令通道发出 PASV 的被动式联机要
求 (Passive 的缩写), 并等待服务器的回应;

3)FTP服务器启动数据端口,并通知客户端连接

如果你的 FTP 服务器是能够处理被动式联机的,此时 FTP 服务器会先启动一个埠口在监听。 这个端口口号码可能是随机的,也可以自定义某一范围的埠口,全看你的 FTP 服务器软件而定。 然后你的 FTP 服务器会透过命令通道告知客户端该已经启动的埠口 (图中的 port PASV), 并等待客户端的联机。

4)客户端随机取用大于1024的端口进行连接

然后你的客户端会随机取用一个大于 1024 的端口号来对主机的 port PASV 联
机。 如果一切都顺利的话,那么你的 FTP 数据就可以透过 port BB 及 port
PASV 来传送了。

4、客户端在防火墙后面

在这里插入图片描述
1.)用户与服务器间命令信道的建立:

因为 NAT 会主动的记录由内部送往外部的联机信息,而由于命令信道的建立是
由客户端向服务器端联机的, 因此这一条联机可以顺利的建立起来的;

2)用户与服务器间数据信道建立时的通知:

同样的,客户端主机会先启用 port BB ,并透过命令通道告知 FTP 服务器,且
等待服务器端的主动联机;

3)服务器主动连到 NAT 等待转递至客户端的联机问题:

但是由于透过 NAT 的转换后,FTP 服务器只能得知 NAT 的 IP 而不是客户端的
IP , 因此 FTP 服务器会以 port 20 主动的向 NAT 的 port BB 发送主动联机
的要求。 但你的 NAT 并没有启动 port BB 来监听 FTP 服务器的联机啊!

解决方案:

  1. 使用 iptables 所提供的 FTP 侦测模块(后面有使用)
  2. 客户端选择被动式 (Passive) 联机模式

二、vsftpd的部署与使用

1、服务器部署

1)安装vsftp:

yum -y install  vsftpd

2)准备分发的文件

touch  /var/ftp/abc.txt

3)启动服务:

# systemctl  start  vsftpd
# systemctl  enable  vsftpd     // 设置开机启动
# netstat  -anpt 等价于 #ss    //查看端口

4)关闭防火墙:

  # systemctl  stop  firewalld
  # systemctl  disable  firewalld
  # setenforce  0
  # vim  /etc/selinux/config  ---->修改内容为:SELINUX=disabled

5)开启上传下载功能:put、mirror -R、get

# vi  /etc/vsftpd/vsftpd.conf             #编译配置文件
anon_upload_enable=YES                    #启动上传文件功能
anon_mkdir_write_enable=YES               #启动创建目录功能
systemctl  restart  vsftpd                #重启ftp服务

6)开启密码验证功能:密码登录,远程服务是自己的家目录

#vi   /etc/vsftpd/vsftpd.conf		     	# 编译配置文件
anonymous_enable=YES		            	#关闭匿名访问功能
# systemctl  restart  vsftpd				#重启ftp服务

2、客户端使用

1、浏览器访问:ftp://ip
2、密令行lftp访问:
方法一:

# yum  -y  install  lftp     #安装客户端工具
# lftp  ip                   #访问服务器
#  get  abc.txt              #下载文件
# mirror   dir               #下载目录

方法二:

1)安装客户端工具:

# yum  -y install  ftp

2)访问:

 # ftp   ip
    Name (192.168.91.158:root): anonymous
    331 Please specify the password.
    Password:(直接返回)

注:匿名用户只有下载权限

3)密令行wget下载

# wget  ftp://ip/abc.txt   -O    /tmp/dir1

3、LINUX客户端登录(lftp脚本自动化)

lftp   jiao1:123456@192.168.10.133
[root@www ~]# lftp [-p port] [-u user[,pass]] [host|IP]
 [root@www ~]# lftp -f filename
 [root@www ~]# lftp -c "commands"
 选项与参数:
  -p :后面可以直接接上远程 FTP 主机提供的 port
  -u :后面则是接上账号与密码,就能够连接上远程主机了 如果没有加账号密码, lftp 默认会使用 anonymous 尝试匿名登录
  -f :可以将指令写入脚本中,这样可以帮助进行 shell script 的自动处理喔!
  -c :后面直接加上所需要的指令。
[root@www lftp]# vim lftp.ksu.sh
 lftp -c "open ftp.ksu.edu.tw
 cd /pub/CentOS/
 mget -c -d RPM-GPG*
 bye"
 [root@www lftp]# sh lftp.ksu.sh

4、windows登录

ftp://jiao1:123456@192.168.10.133

三、vsftp的软件结构

  1. /etc/vsftpd/vsftpd.conf 主配置文件
  2. /etc/pam.d/vsftpd
    这个是vsftpd使用PAM模块时的相关配置文件。主要用来作为身份认证之用,还有阻挡一些用户使用vsftpd。被阻挡的用户要写到/etc/vsftpd/ftpusers里面
[root@192 ~]# cat /etc/pam.d/vsftpd 
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required	pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth       required	pam_shells.so
auth       include	password-auth
account    include	password-auth
session    required     pam_loginuid.so
session    include	password-auth
[root@192 ~]#
  1. /etc/vsftpd/ftpusers 负责记录被阻挡使用vsftpd的用户
  2. /etc/vsftpd/user_list 这个需要和配置文件中的参数配合使用。
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list


#当userlist_enable=YES时,开始使用/etc/vsftpd/user_list用户列表,如果:
#1)userlist_deny=YES:则/etc/vsftpd/user_list为黑名单,名单外用户可以登录
#2)userlist_deny=NO:则/etc/vsftpd/user_list为白名单,名单外用户不能登录
  1. /etc/vsftpd/chroot_list
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

#当chroot_local_user代表是否启用要将用户限制到自己的家目录下
#chroot_list_enable代表是否启动列表功能。
#当chroot_local_user=YES 和 chroot_list_enable=YES 时,/etc/vsftpd.chroot_list中的用户没有被chroot,可以切换到其他目录。
  1. /usr/sbin/vsftpd 只是一个执行文件而已。
  2. /var/ftp/匿名用户访问的家目录。

四、vsftpd.conf的配置说明

五、默认功能与调优

1、默认功能以及参数

[root@www ~]# vim /etc/vsftpd/vsftpd.conf
  # 1. 与匿名者有关的信息:
 anonymous_enable=YES <==支持匿名者的登入使用 FTP 功能

  # 2. 与实体用户有关的设定
 local_enable=YES <==支持本地端的实体用户登入
 write_enable=YES <==允许用户上传数据 (包括档案与目录)
 local_umask=022 <==建立新目录 (755) 与档案 (644) 的权限
 
  # 3. 与服务器环境有关的设定
 dirmessage_enable=YES <==若目录下有 .message 则会显示该档案的内容
 xferlog_enable=YES <==启动登录文件记录,记录于/var/log/xferlog
 connect_from_port_20=YES <==支持主动式联机功能
 xferlog_std_format=YES <==支持 WuFTP 的登录档格式
 listen=YES <==使用 stand alone 方式启动 vsftpd
 pam_service_name=vsftpd <==支持 PAM 模块的管理
 userlist_enable=YES <==支持 /etc/vsftpd/user_list 档案内的账号登入管控!
 tcp_wrappers=YES <==支持 TCP Wrappers 的防火墙机制
  • 你可以使用 anonymous 这个匿名账号或其他实体账号 (/etc/passwd) 登入;
  • anonymous 的家目录在 /var/ftp ,且无上传权限,亦已经被 chroot 了; 实体用户的家目录参考/etc/passwd,并没有被 chroot,可前往任何有权限可进入的目录中;
  • 任何于 /etc/vsftpd/ftpusers 内存在的账号均无法使用 vsftpd (PAM);  可利用 /etc/hosts.{allow|deny} 来作为基础防火墙;
  • 当客户端有任何上传/下载信息时,该信息会被纪录到 /var/log/xferlog 中;
  • 主动式联机的埠口为 port 20;
  • 使用格林威治时间 (GMT)。

所以当你启动 vsftpd 后,你的实体用户就能够直接利用 vsftpd 这个服务来传输
他自己的数据了。 不过比较大的问题是,因为 vsftpd 预设使用 GMT 时间,因为你在
客户端使用 ftp 软件连接到 FTP 服务器时,会发现每个档案的时间都慢了八小时了!
真是讨厌啊! 所以建议你加设一个参数值,就是『 use_localtime=YES 』啰!

[root@www ~]# vim /etc/vsftpd/vsftpd.conf
 # 在这个档案当中的最后一行加入这一句即可
 use_localtime=YES
 
[root@www ~]# systemctl   restart  vsftpd

2、对实体账号的设置

1)先建立主配置文件 vsftpd.conf,这个配置文件已经包含了主要设定值

[root@www ~]# vim /etc/vsftpd/vsftpd.conf
 # 1. 与匿名者相关的信息,在这个案例中将匿名登录取消:
 anonymous_enable=NO
 
 # 2. 与实体用户相关的信息:可写入,且 umask 为 002 喔!
 local_enable=YES
 write_enable=YES
 local_umask=002
 userlist_enable=YES
  userlist_deny=YES
 userlist_file=/etc/vsftpd/user_list <==这个档案必须存在!还好,预设
有此档案!
 
 # 3. 与服务器环境有关的设定
 use_localtime=YES
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 xferlog_std_format=YES
 listen=YES
 pam_service_name=vsftpd
 tcp_wrappers=YES
 banner_file=/etc/vsftpd/welcome.txt <==这个档案必须存在!需手动建立!
 
 [root@www ~]#  systemctl   restart  vsftpd

2)建立欢迎信息

[root@192 ~]# vi /etc/vsftpd/vsftpd.conf
banner_file=/etc/vsftpd/welcome.txt  #加入这一条

[root@192 ~]# vi /etc/vsftpd/welcome.txt
[root@192 ~]# cat /etc/vsftpd/welcome.txt 
欢迎大家~~~~~~~
你们好
[root@192 ~]#

在这里插入图片描述
4)建立限制系统账号登录,比如root、bin等,如果你不想让jiaofan这个账号登录,你可以把他加进去。

[root@192 ~]# vi /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
# 这三条必须开启

[root@192 ~]# vi /etc/vsftpd/user_list 
root
bin
jiaofan
....(下面省略)....

5)对用户(包括未来新建用户)进行 chroot,但是jiaofan1和jiaofan2不用chroot,其他都要chroot.

#1、修改 vsftpd.conf 的参数值:
[root@192 ~]# vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

#2、建立不被chroot 的用户账户列表,即使没有任何账号,此文件也要存在。
[root@192 ~]# vi /etc/vsftpd/chroot_list 
[root@192 ~]# cat /etc/vsftpd/chroot_list 
jiaofan1
jiaofan2
[root@192 ~]# 

6)限制实体用户总下载流量(带宽)

[root@192 ~]# vi /etc/vsftpd/vsftpd.conf
#增加下面的参数即可
local_max_rate=1000000 <==记住喔,单位是 bytes/second

7)限制最大同时上线人数和同一IP最大连接数,同时连接10个人,一个ip只能一个用户登录

[root@192 ~]# vi /etc/vsftpd/vsftpd.conf
#增加下面两个参数即可
max_clients=10
max_per_ip=1

8)严格使用ftp用户登录列表,只能有指定的人来登录,比如只能user1登录。

[root@192 ~]# vi /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

[root@192 ~]# vi /etc/vsftpd/user_list 
user1

3、对匿名账号的设置

1)匿名用户上传/下载自己的资料(权限开放最大)
在上列的数据当中,实际上匿名用户仅可进行下载的动作而已。如果你还想让匿名
者可以上传档案或者是建立目录的话, 那你还需要额外增加一些设定才行:

[root@www ~]# vim /etc/vsftpd/vsftpd.conf
 # 新增底下这几行啊!
 write_enable=YES
 anon_other_write_enable=YES
 anon_mkdir_write_enable=YES
 anon_upload_enable=YES

如果你设定上面四项参数,则会允许匿名者拥有完整的建立、删除、修改档案与目录的
权限。 不过,实际要生效还需要 Linux 的文件系统权限正确才行! 我们知道匿名者
取得的身份是 ftp ,所以如果想让匿名者上传数据到 /var/ftp/uploads/ 中,则需要
这样做:

[root@www ~]# mkdir /var/ftp/uploads
[root@www ~]# chown ftp /var/ftp/uploads

然后你以匿名者身份登入后,就会发现匿名者的根目录多了一个 /upload 的目录存在
了,并且你可以在该目录中上传档案/目录喔! 如此一来系统的权限大开!很要命喔!
所以,请仔细的控制好你的上传目录才行!

不过,在实际测试当中,却发现还是没办法上传呢!怎么回事啊?如果你有去看一
下 /var/log/messages 的话,那就会发现啦! 又是 SELinux 这家伙呢!怎么办?就
透过『 sealert -l … 』在 /var/log/messages 里面观察到的指令丢进去, 立刻就
知道解决方案啦!解决方案就是放行 SELinux 的匿名 FTP 规则如下:

[root@www ~]# setsebool -P allow_ftpd_anon_write=1
[root@www ~]# setsebool -P allow_ftpd_full_access=1

2)被动模式连接端口的限制:被动连接我要用指定的 65400—65410 这10个端口号

[root@www ~]# vim /etc/vsftpd/vsftpd.conf
 # 增加底下这几行即可啊!
 pasv_min_port=65400
 pasv_max_port=65410

注:以上所有修改配置文件的动作都要重启服务。

六、防火墙设置

  • 加入 iptables 的 ip_nat_ftp, ip_conntrack_ftp 两个模块
  • 开放 port 21 给因特网使用
  • 开放前一小节提到的 port 65400~65410 埠口给 Internet 联机用
 # 1. 加入模块:虽然 iptables.rule 已加入模块,不过系统档案还是修改一下好了:
 [root@www ~]# vim /etc/sysconfig/iptables-config
 IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
 # 加入模块即可!两个模块中间有空格键隔开!然后重新启动 iptables 服务啰!
 
 #2、开放前一小节提到的 port 65400~65410 埠口给 Internet 联机用
 [root@www ~]#   iptables -A INPUT -p TCP --dport 65400:65410 --sport 1024:65534 -j ACCEPT

#3、开放21号端口
 [root@www ~]#   iptables -A INPUT -p TCP --dport 21  -j ACCEPT

七、vsftpd使用ssl加密

1、检查 vsftpd 有无支持 ssl 模块:

[root@192 ~]#  ldd $(which vsftpd) | grep ssl
	libssl.so.10 => /lib64/libssl.so.10 (0x00007f53cdade000)

如果有出现 libssl.so 的字样,就是有支持!这样才能够继续下一步!

2、建立专门给 vsftpd 使用的凭证数据:

[root@192 ~]# cd /etc/pki/tls/certs
[root@192 certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert
[root@192 certs]# make vsftpd.pem
# 一会随便输入就好
umask 77 ; \
PEM1=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
PEM2=`/bin/mktemp /tmp/openssl.XXXXXX` ; \
/usr/bin/openssl req -utf8 -newkey rsa:2048 -keyout $PEM1 -nodes -x509 -days 365 -out $PEM2  ; \
cat $PEM1 >  vsftpd.pem ; \
echo ""    >> vsftpd.pem ; \
cat $PEM2 >> vsftpd.pem ; \
rm -f $PEM1 $PEM2
Generating a 2048 bit RSA private key
....................+++
....+++
writing new private key to '/tmp/openssl.dEgLe7'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:BeiJing
Locality Name (eg, city) [Default City]:BeiJING
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:ADFSASDF
Email Address []:
[root@192 certs]# ls
ca-bundle.crt  ca-bundle.trust.crt  make-dummy-cert  Makefile  renew-dummy-cert  vsftpd.pem
[root@192 certs]# cp vsftpd.pem  /etc/vsftpd/
[root@192 certs]# ll /etc/vsftpd/vsftpd.pem 
-rw-------. 1 root root 3015 1月  15 17:46 /etc/vsftpd/vsftpd.pem
[root@192 certs]# 

3、修改配置文件,配置加密参数

[root@www ~]# vim /etc/vsftpd/vsftpd.conf
 # 增加底下这几行即可啊!
  # 实体账号的一般设定项目:
 local_enable=YES
 write_enable=YES
 local_umask=002
 chroot_local_user=YES
 chroot_list_enable=YES
 chroot_list_file=/etc/vsftpd/chroot_list
 local_max_rate=10000000
 
 # 匿名者的一般设定:
 anonymous_enable=YES
 no_anon_password=YES
 anon_max_rate=1000000
 data_connection_timeout=60
 idle_session_timeout=600
 
 # 针对 SSL 所加入的特别参数!每个项目都很重要!
 ssl_enable=YES <==启动 SSL 的支持
 allow_anon_ssl=NO <==但是不允许匿名者使用 SSL 喔!
  force_local_data_ssl=YES <==强制实体用户数据传输加密
 force_local_logins_ssl=YES <==同上,但连登入时的帐密也加密
 ssl_tlsv1=YES <==支持 TLS 方式即可,底下不用启动
 ssl_sslv2=NO
 ssl_sslv3=NO
 rsa_cert_file=/etc/vsftpd/vsftpd.pem <==预设 RSA 加密的凭证档案所在
 
 # 一般服务器系统设定的项目:
 max_clients=50
 max_per_ip=5
 use_localtime=YES
 dirmessage_enable=YES
 xferlog_enable=YES
 connect_from_port_20=YES
 xferlog_std_format=YES
 listen=YES
 pam_service_name=vsftpd
 tcp_wrappers=YES
 banner_file=/etc/vsftpd/welcome.txt
 dual_log_enable=YES
 vsftpd_log_file=/var/log/vsftpd.log
 pasv_min_port=65400
 pasv_max_port=65410
 
[root@www ~]# systemctl   restart  vsftpd

4、如何自制证书的https(与ftp无关,我只是看到了想记录一下)

思路:

  1. 先建立peivate key 准备提供给SSL证书签名用。但是生成后要加密
  2. 建立SSL证书
# 1. 先到 /etc/pki/tls/certs 去建立一把给 Apache 使用的私钥档案:
 [root@www ~]# cd /etc/pki/tls/certs
 [root@www certs]# make vbird.key
 umask 77 ; /usr/bin/openssl genrsa -aes128 2048 > vbird.key <==其实
是这个指令
 Generating RSA private key, 2048 bit long modulus
 .................................................................+++
 ...............................+++
 e is 65537 (0x10001)
 Enter pass phrase: <==这里输入这把私钥的密码,需要多于四个字符!
 Verifying - Enter pass phrase: <==再一次!
 
 # 2. 将刚刚建立的档案中,里面的密码取消掉!不要有密码存在啦!
 [root@www certs]# mv vbird.key vbird.key.raw
 [root@www certs]# openssl rsa -in vbird.key.raw -out vbird.key
 Enter pass phrase for vbird.key.raw: <==输入刚刚的密码啦!
 writing RSA key
 [root@www certs]# rm -f vbird.key.raw <==旧的密钥档移除
 [root@www certs]# chmod 400 vbird.key <==权限一定是 400 才行!
 
 # 3. 建置所需要的最终凭证档!
 [root@www certs]# make vbird.crt SERIAL=2011080801
 umask 77 ; /usr/bin/openssl req -utf8 -new -key vbird.key -x509 -days 
365
 -out vbird.crt -set_serial 2011080801 <==可以加入日期序号
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 -----
 Country Name (2 letter code) [XX]:TW
 State or Province Name (full name) []:Taiwan
 Locality Name (eg, city) [Default City]:Tainan
 Organization Name (eg, company) [Default Company Ltd]:KSU
 Organizational Unit Name (eg, section) []:DIC
 Common Name (eg, your name or your server's hostname) 
[]:www.centos.vbird
 Email Address []:vbird@www.centos.vbird
 
 [root@www certs]# ll vbird*
  -rw-------. 1 root root 1419 2011-08-08 15:24 vbird.crt <==最终凭证档!
 -r--------. 1 root root 1679 2011-08-08 15:22 vbird.key <==系统私钥文件

八、ftp客户端常用命令

命令用法作用
getget nmap_file [本地路径]下载文件到本地
putput 本地文件 ftp服务器路径上传文件
openopen [ftpservername]指定的远程Linux FTP服务器连接
useruser [username] [password]使用指定远程Linux FTP服务器的用户登录
pwdpwd显示远程Linux FTP服务器上的当前路径
lsls [ 文件夹路径 ]列出远程Linux FTP服务器上当前路径下的目录和文件
dirdir列出远程Linux FTP服务器上当前路径下的目录和文件
mkdirmkdir [foldname]在远程Linux FTP服务器上当前路径下建立指定目录
rmdirrmdir [foldname]删除远程Linux FTP服务器上当前路径下的指定目录
cdcd [foldname]更改远程Linux FTP服务器上的工作目录
deletedelete [filename]删除远程Linux FTP服务器上指定的文件
renamerename [filename] [newfilename]重命名远程Linux FTP服务器上指定的文件
closeclose从远程Linux FTP服务器断开但保留FTP命令参数提示
disconnectdisconnect从远程Linux FTP服务器断开但保留FTP命令参数提示
byebye结束和远程Linux FTP服务器的连接
quitquit结束和远程Linux FTP服务器的连接
!!直接从远程Linux FTP服务器进入到本地shell中
exitexit(接上步)从本地shell环境中返回到远程Linux FTP服务器环境下
!ls!ls列出本地机器上当前路径下的目录和文件
lcdlcd [foldname]更改本地机器的工作目录
??显示ftp命令说明
helphelp显示ftp命令说明(同上)

九、报错以及处理

报错:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
原因:因为用户的根目录可写,并且使用了chroot限制,而这在最近的更新里是不被允许的。
解决办法有两种:
1、用命令chmod a-w /home/user去除用户根目录的写权限,注意把目录替换成你自己的。
2、在配置文件/etc/vsftpd/vsftpd.conf中添加可写参数:allow_writeable_chroot=YES

报错二:

[deployer@zy03-daas-21m3aser-001 ~]$ sftp -oPort=9222 sftp@172.17.8.44
sftp@172.17.8.44's password:
Received message too long 1416128883

解决办法

[root@www ~]# vi /usr/local/openssh/etc/sshd_config   #<==配置文件
Subsystem      sftp    /usr/local/openssh/libexec/sftp-server
改成
Subsystem       sftp    internal-sftp
#Subsystem      sftp    /usr/local/openssh/libexec/sftp-server
[root@www ~]# systemctl restart sshd

报错三:用gzip -t 检查文件完整性报错

采集机用gzip -t 查看是没有问题的,但是传输到另一台主机就出现问题。

采集机情况
请添加图片描述
接收机情况
请添加图片描述
解决办法:
得用bin模式下载文件才行
在这里插入图片描述

十、Received message too long报错

注意:
subsystem使用默认的 sftp-server,如果使用的 internal-sftp, 即使是nologin也能正常连接。

1、创建用户时, shell指定nologin, 此时连接sftp抛出异常

[root@localhost ~]# useradd -d /home/u2 -s /sbin/nologin u2
[root@localhost ~]# echo "changeme" |passwd u2 --stdin

[root@localhost ~]# sftp u2@localhost
u2@localhost's password: 
Received message too long 1416128883

2、修改为bash后, 可正常使用; 从安全性考虑, 不允许sftp用户登录shell, 所以不建议修改

[root@localhost ~]# usermod -s /bin/bash u2
[root@localhost ~]# sftp u2@localhost
u2@localhost's password: 
Connected to localhost.
sftp> 

3、shell指定nologin, 此时连接sftp抛出异常的解决办法

[root@slave1 ftp-jiaofan]# vi /etc/ssh/sshd_config
#添加如下信息
Subsystem sftp internal-sftp
Match group sftp            
ChrootDirectory /data1/rsnmp_v1/
ForceCommand internal-sftp 
[root@slave1 ftp-jiaofan]# systemctl  restart sshd
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值