概述
SFTP(SSH 文件传输协议)是为了取代安全性较弱的 FTP 而开发的协议。`sftp` 命令使用 SSH 连接来加密所有数据和命令,因此用户名称、密码、文件内容等信息在网络上不会有暴露的风险。与 FTP 类似,它支持交互模式,用法也相似,因此熟悉 FTP 的用户也能轻松使用。
主要特点
sftp 命令的主要特点如下:
- 基于 SSH,加密所有通信。
- 提供类似于 FTP 的交互式命令界面。
- 使用单一端口(默认为 22),有利于防火墙环境。
- 支持文件上传(`put`)、下载(`get`)、目录切换(`cd`、`lcd`)等多种功能。
SFTP 与 FTP 对比
SFTP 和 FTP 在文件传输方式和安全性方面存在显著差异。
- SFTP: 通过 SSH 加密数据传输,因此更安全。使用端口 22,并通过单一端口处理所有通信。
- FTP: 以明文(plain text)传输数据,安全性较弱。使用端口 21,且数据传输需要额外的端口。
主要选项
sftp 可以像 FTP 一样进入交互模式使用,也可以与特定命令一起以非交互模式使用。
1) 执行选项
2) 交互模式内部命令
生成的命令:
请尝试组合命令。
描述:
`sftp` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 sftp 命令的各种使用示例来熟悉其功能。
以交互模式连接到服务器
sftp user@server.com
使用 `user` 账户连接到 `server.com`,进入交互模式。
下载文件
sftp user@server.com
... (连接后)
cd /var/log
get syslog ~
从远程服务器的 `/var/log` 目录下载 `syslog` 文件到本地的 `~` 目录。
上传文件
sftp user@server.com
... (连接后)
cd /var/www
put /home/user/document.txt
将本地的 `/home/user/document.txt` 文件上传到远程服务器的 `/var/www` 目录。
以非交互模式传输文件
sftp user@server.com:/remote/path <<< 'put localfile.txt'
使用 `put` 命令以非交互模式一次性上传文件。
安装
sftp 在大多数 Linux 发行版中作为 `openssh-client` 包的一部分默认包含。如果已安装 SSH 客户端,则无需额外安装。
Debian/Ubuntu
sudo apt update
sudo apt install -y openssh-client
RHEL/CentOS/Fedora
sudo dnf install -y openssh-clients
提示与注意事项
总结了使用 sftp 命令时需要注意的事项。
提示
- sftp 与 `scp` 类似,使用 SSH 认证信息。因此,可以使用 `~/.ssh/config` 文件轻松管理连接设置。
- 在交互模式下输入 `help` 可以查看所有内部命令列表。除了 `put` 和 `get`,还可以使用 `mput` 和 `mget` 传输多个文件。
- 当发生网络问题或认证错误时,使用 `-v` 选项输出详细信息有助于解决问题。