SFTP 命令
2024年11月1日大约 3 分钟
Linux 下的 SFTP(Secure File Transfer Protocol)是一种通过 SSH(Secure Shell)协议进行的安全文件传输协议,用于在客户端和服务器之间传输文件。SFTP 的安全性高,常用于在公网或受限网络中传输文件,以下是常用的 SFTP 命令及其详细解析。
1. 基本使用
连接到远程服务器
sftp username@hostname_or_ipusername:远程服务器的用户名hostname_or_ip:远程服务器的 IP 地址或域名- 会提示输入密码,成功后会进入 SFTP 交互式模式。
退出 SFTP 会话
exit或者
bye
2. 常用命令与解析
在进入 SFTP 交互模式后,可以使用以下命令:
查看和导航
显示当前目录
pwd # 远程服务器上的当前目录 lpwd # 本地机器上的当前目录切换目录
cd <remote_directory> # 切换到远程服务器上的指定目录 lcd <local_directory> # 切换到本地机器上的指定目录列出文件
ls # 列出远程服务器目录中的文件和目录 lls # 列出本地机器目录中的文件和目录
文件传输
上传文件
put <local_file> [remote_file]- 将本地的
local_file上传到远程服务器的当前目录。 - 可以指定
remote_file,将文件以新名称上传。
- 将本地的
下载文件
get <remote_file> [local_file]- 将远程服务器的
remote_file下载到本地目录。 - 可以指定
local_file以新的文件名保存。
- 将远程服务器的
上传目录
put -r <local_directory>- 递归上传本地目录
local_directory及其内容到远程服务器。
- 递归上传本地目录
下载目录
get -r <remote_directory>- 递归下载远程服务器的
remote_directory及其内容到本地。
- 递归下载远程服务器的
其他操作
删除文件
rm <remote_file>- 删除远程服务器上的指定文件。
创建目录
mkdir <remote_directory>- 在远程服务器上创建新目录。
删除目录
rmdir <remote_directory>- 删除远程服务器上的空目录。
检查文件传输的进度
progress- 开启或关闭文件传输的进度显示。
3. 常见 SFTP 非交互模式
SFTP 也可以通过非交互模式进行文件传输,适用于脚本或自动化任务:
sftp username@hostname_or_ip << EOF
cd /remote/directory
put /local/file
get /remote/file /local/directory
bye
EOF这样就可以通过脚本完成 SFTP 文件的传输。
4. SFTP 的常见错误与解决
连接错误:
ssh: connect to host hostname port 22: Connection refused这通常是由于服务器未开放 SSH 端口或未启动 SSH 服务,可以通过
service ssh start启动 SSH 服务。权限不足:如果遇到权限问题,需要确保有访问目标目录和文件的权限。
防火墙限制:如果网络中有防火墙,可以将 SFTP 使用的端口(通常是 22)加入防火墙的允许列表。
5. SFTP 与 SCP 区别
- SFTP:基于 SSH 的文件传输协议,功能丰富,支持更多命令及交互操作。
- SCP:更适合简单的单文件传输,不支持交互模式,但速度稍快。
示例
以下是一个完整的示例:
sftp user@192.168.1.10 << EOF
cd /remote/path
lcd /local/path
put file.txt
get remote_file.txt
bye
EOF这种方式可以通过脚本实现自动化传输,方便执行多个文件的传输任务。
SFTP 是一个强大的工具,通过 SSH 提供了加密的文件传输,支持灵活的文件操作,是 Linux 系统管理中不可或缺的一部分。