文件服务器之FTP

FTP(File Transfer Protocol)主要用来进行文件的传输,尤其是大型文件 时使用FTP传输更方面,但是使用FTP时使用明文传输,具有一定程度的危险性.下面介绍较为安全但功能较少的vsftpd.

ubuntu安装vsftpd

sudo apt install vsftpd
sudo apt install ftp

一.FTP功能简介

1.不同等级的用户身份:user,guest,anonymous
实体用户real user获得系统的权限比较完整,所以可以进行比较多的操作,而匿名用户仅提供他下载资源的能力而已

2.限制用户活动目录:change root简称chroot
用来限制用户仅能在自己的用户主目录当中活动,如此一来,由于用户无法离开自己的用户主目录,而且登录FTP后,显示的根目录就是自己用户主目录的内容,这种环境称之为 change root,简称chroot,即改变根目录的意思.

linux下常用ftp命令
这里以匿名登录为例

[ubuntu@VM-48-245-ubuntu ~]$ ftp ftp.ksu.edu.tw
Connected to ftp.ksu.edu.tw.
220 Welcome to Kun Shan University FTP service.
Name (ftp.ksu.edu.tw:ubuntu): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

文件服务器之FTP_第1张图片

ftp> get filename 下载单一文件
ftp> mget filename* 下载多个文件,可以用通配符*
ftp> put filename 上传filename到这个服务器上
ftp> delete filename 删除ftp服务器上的filename文件
ftp> passive 启动或孤傲牛逼passive模式
ftp> bye 结束ftp的使用

如果目标FTP主机port更改,则使用如下方式连接主机

[ubuntu@VM-48-245 ~]$ ftp hostname 318

FTP的传输使用的是TCP数据包协议,TCP在简历连接前会先进行3次握手,不过FTP服务器是比较麻烦,因为FTP服务器使用了两个连接,分别是命令通道数据流通道(ftp-data)

二.FTP连接步骤

FTP默认使用主动式(Active)连接

文件服务器之FTP_第2张图片

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

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

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

三.FTP的替代sftp

因为SSH技术的产生,我们现在可以用SSH提供的sftp这个Server,在上面传输的数据是经过加密的,所以比较安全一些.

SFTP常用命令
连接

user@user-virtual-machine:~$ sftp user@localhost
user@user-virtual-machine:~$ sftp user@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
user@localhost's password: 
Connected to localhost.
sftp> ls

将文件有本机上传到远程主机

sftp> put /etc/hosts

将文件由远程主机下载回来

sftp> get.bashrc

你可能感兴趣的:(Linux)