sftp、ftp 和 tftp 简介

FTP 基于安全和效率不再常用,不过由于这是一个应用最早的协议,建有两种连接(数据和控制分离),了解和学习还是很有必要的。

  • RFC 959:File Transfer Protocol(FTP).
  • RFC 2389:Feature negotiation mechanism - "FEAT" and "OPTS";FTP Commands and Extensions。
  • vsftpd、filezilla
    安装服务端 vsftpd,安装客户端 filezilla(非命令行,是带界面的),你就可以玩了。
    CentOS 上 sftp 命令。默认 ftp 不安装,要学习的话,可以 yum 安一下。更多 ftp 客户端,比如 ncftp 支持断点续传。

SFTP

  • 10 single line SFTP commands to transfer files in Unix/Linux;
    sftp host:/dest_path <<< $'put /local_path/file': 将本地的 /local_path/file 上传到 host 主机的 /dest_path 下。
    sftp pri_135:/home/jiahongming/core.6661 .: 将服务器上的 core 文件下载到本地当前目录,pri_135 是 ~/.ssh/config 里面配置的服务器名。

TFTP 协议(Trivial File Transfer Protocol)

  • 在 嵌入式系统 中,常见使用 TFTP(简单文件传输协议:Trivial FTP),端口 69。

使用 tftpd

  • 安装 sudo yum -y install tftp-server, sudo yum -y install tftp
  • 服务启动
    sudo /usr/sbin/in.tftpd -v -l -a 127.0.0.1:8888 -s ~/tftpboot -P ~/tftpboot/tftpd.pid 后台运行
    -s 参数表示指定文件目录,也提升安全性。
    -c 参数 --create,表示允许上传文件(新创建文件),这个参数在客户端和服务端都不一定实现,即使实现,可能也不一定是你所期望。如果没有这个参数,则客户端只允许上传服务端已存在的文件,且该文件允许所有人可读写,否则报告错误如下(chmod a+rw 可改文件读写权限):
tftp: server error: (1) File not found
tftp: server error: (0) Permission denied

-L 这个参数表示前台运行,小写的 -l 表示后台运行。

  • 客户端
    tftp 127.0.0.1 8888 -c get sapiloader 下载服务端的 sapiloader 文件,待下载的文件只能是普通文件,符号链接文件不支持。否则报告:
    tftp: server error: (0) Too many levels of symbolic links
  • 启动后 sudo netstat -ntlup|grep 8888 查看是否已启动。

安装 tftp-server,安装后服务 /usr/sbin/in.tftpd

  • Installing and Configuring TFTP Server on CentOS 7
  • How to setup logging for TFTP daemon under /etc/xinetd.d/tftp?
  • 安装后,通过 rpm -ql tftp-server 或者 repoquery --list tftp-server repoquery 非常好,就用她吧。两个命令:type -a command -V
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot

yum find out path where is package installed to on CentOS/RHEL:怎么知道安装到哪里去了?

FTP 协议

  • FTP 的默认 端口 是 21(control command)和 20(data transfer)。

通过 telnet 了解 ftp 命令

telnet  
FEAT
OPTS UTF8 ON
USER 
PASS 
...
通过 telnet 了解 ftp 命令示例

THE FTP MODEL

Model for FTP Use

控制连接(control connection)

由 client 发起,连接到 server 的 21 端口。

数据连接(data connection)

  • active mode
    client 会在一个端口侦听,client 把这个端口号发送给 server,由 server 主动发起连接到这个端口建立数据连接。
  • passive mode
    client 从 PC1 端口发送一个 PASV 命令给 server 21 端口,然后收到 server 给出的 PS1 端口,然后 client 从 PC2 端口连接到这个 PS1 端口 建立数据连接。


    passive mode

Basic FTP Commands

Common FTP Commands
示例 ftp 的 ls 命令
ls命令

TFTP(Trivial File Transfer Protocol)

  • 下载 tftp-server @sourceforge;
    在 Windows 上安装后,使用 RunStandAloneMT.bat 启动 tftp server。

    RunStandAloneMT.bat

  • OpenTFTPServerMT.ini:配置文件,常用配置项 [HOME] 指定根目录;[TFTP-OPTIONS]等。

    OpenTFTPServerMT.ini

  • tftp @busybox;

tftp [OPTIONS] HOST [PORT]
Transfer a file from/to tftp server
Options:
        -l FILE Local FILE
        -r FILE Remote FILE
        -g      Get file
        -p      Put file
        -b SIZE Transfer blocks of SIZE octets
  • 示例:tftp -pl test.log 192.168.10.3
    将本地文件 test.log 推送到 192.168.10.3;
  • 示例:tftp -gr js212e.loader.71521.tar 192.168.123.124
    从 192.168.123.124 取得文件;
  • Windows 下的 tftp 命令
C:\Users\Administrator>tftp

向运行 TFTP 服务的远程计算机传入或从该计算机传出文件。

TFTP [-i] host [GET | PUT] source [destination]

  -i              指定二进制映像传输模式(也称为八进制)。在二进制映像模式中,逐字节地移动文件。在传输二进制文件时,使用此模式。
  host            指定本地或远程主机。
  GET             将远程主机上的文件目标传输到本地主机的文件源中。
  PUT             将本地主机上的文件源传输到远程主机上的文件目标。
  source          指定要传输的文件。
  destination     指定要将文件传输到的位置。

你可能感兴趣的:(sftp、ftp 和 tftp 简介)