暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

FTP的使用

IT那活儿 5天前
5

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


什么是FTP服务器

如果想要从一台服务器上传输一个文件,通常可以使用scp命令来进行远程拷贝和上传,但是这样操作需要知道目标文件的绝对位置,在频繁的进行文件的上传和下载时,会造成很多的麻烦。

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP。

FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。

由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。默认情况下FTP协议使用TCP端口中的 20 和 21这两个端口,其中 20 用于传输数据,21 用于传输控制信息。


操作FTP

2.1 安装

安装vsftpd软件:

#yum install vsftpd -y
复制

查看vsftpd的软件信息:

#rpm -qi vsftpd
复制

2.2 启动

启动vsftpd服务:

#systemctl start vsftpd.service(centos 7)

#
service vsftpd start(centos 6)

复制

确认是否启动成功:

#ps -ef |grep ftp
复制

查看端口号:

#netstat -anplut | grep vsftpd
复制

2.3 登录

下载客户端工具 ftp 和 lftp:

# yum install ftp lftp -y
复制

登录ftpvsftpd 使用的用户名和密码就是linux系统里面使用分用户和密码,不需要单独新建):

# 

lftp -u  用户名,密码 ip地址

查看lftp常用命令

#
help

复制
  • !ls 

    查看本地目录内容。

  • lcd命令 

    在本地切换目录。

  • put命令

    上传文件到ftp服务器·。

  • mirror命令

    下载文件夹到本地。


FTP配置文件

ftp服务的配置文件路径/etc/ftp/vsftpd, 一般下载vsftpd服务后有四个重要的配置文件。

vsftpd.conf:主配置文件,包含一些常用配置。

  • 是否允许匿名用户ftp登录:YES代表允许;NO不允许

    anonymous_enable=YES

  • 是否允许本地登录

    local_enable=YES

  • 是否有写的权利

    write_enable=YES

  • 日志文件位置

    xferlog_file=/var/log/xferlog 采用标准的日志格式。

  • ftpusers

    ftp黑名单,如果想让一个用户登录不了ftp服务,可以将用户加入黑名单。

  • user_list

    黑名单或白名单,只有 userlist_deny=NO的时候,在这个文件里面所有的用户都可以使用ftp服务,这个时候文件就从黑名单变成白名单。

3.1 限制用户只能在自己家目录操作

修改vsftpd.conf配置文件:

#对本地用户限制在自己的家目录里
chroot_local_user=YES 
#启用限制名单
chroot_list_enable=YES
(default follows)
# 具体的名单路径,这个名单的用户不受限制,可以随意切换目录
chroot_list_file=/etc/vsftpd/chroot_list
#这个目录没有,需要自己新建。

复制

3.2 SFTP

因为 SFTP 是基于 SSH 协议的,所以默认的身份认证方法与 SSH 协议保持一致。通常我们使用 SSH Key 来进行连接,如果你已经可以使用 SSH 连接到远程服务器上,那么可以使用以下命令来连接 SFTP:

sftp user_name@remote_server_address[:path]
复制

如果远程服务器自定义了连接的端口,可以使用 -P 参数:

sftp -P remote_port user_name@remote_server_address[:path]
复制

连接成功后将进入一个 SFTP 的解释器,可以发现命令行提示符变成了 sftp>,使用 exit 命令可以退出连接。

如果连接地址存在 path 并且 path 不是一个目录,那么 SFTP 会直接从服务器端取回这个文件:

sftp> mkdir anotherDirectory
复制

以上的命令都是用来操作远程服务器的,如果想要操作本地目录呢?只需要在每个命令前添加 l 即可,例如显示本地操作目录下的文件:

sftp> lls

localFiles

复制

使用 ! 可以直接运行 Shell 中的指令:

sftp> !df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1s1 466Gi 360Gi 101Gi 793642919 9223372036851132888    0%
devfs 336Ki 336Ki 0Bi 1001162                   0  100% dev
/dev/disk1s4 466Gi 4.0Gi 101Gi 45 9223372036854775802    0% private/var/vm
map -hosts 0Bi 0Bi 0Bi 1000                   0  100% net
map auto_home 0Bi 0Bi 0Bi 1000                   0  100% home

复制

传输文件

4.1 从远程服务器拉取文件

使用 get 命令可以从远程服务器拉取文件到本地:

sftp> get remoteFile [newName]
复制

如果不指定 newName,将使用和远程服务器相同的文件名。

使用 -r 参数可以拉取整个目录:

sftp> get -r remoteDirectory
复制

4.2 从本地上传文件到服务器

使用 put 命令可以从本地上传文件到服务器:

sftp> put localFile
复制

同样的,可以使用 -r 参数来上传整个目录,但是有一点要注意,如果服务器上不存在这个目录需要首先新建:

sftp> mkdir folderName

sftp>
 put -r folderName

复制


END


本文作者:朱凯方(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论