SFTP

Linux SFTP SSH SHELL

Posted by gomyck on September 8, 2023

记录 SFTP 的常用指令, 省去开启文件传输软件的麻烦

FTP,即文件传输协议,是一种流行的、未加密的在两个远程系统之间传输文件的方法。 截至 2022 年,由于缺乏安全性,它已被大多数现代软件弃用,并且大多只能用于历史遗留下来应用程序。

SFTP 是安全文件传输协议,是一种内置在 SSH 中的单独协议,可以通过安全连接实现 FTP 命令。 通常,它可以在仍然需要 FTP 服务器的任何环境中直接使用。

在几乎所有情况下,SFTP 都比 FTP 更可靠,因为它具有底层的安全特性和搭载 SSH 连接的能力。 FTP 是一种不安全的协议,只能在有限的情况下或在您信任的网络上使用。

如何连接 SFTP

使用几乎和 ssh 连接指令一样的形式来连接

1
2
3
4
5
6
#usage: sftp [-46AaCfNpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
#          [-D sftp_server_command] [-F ssh_config] [-i identity_file]
#          [-J destination] [-l limit] [-o ssh_option] [-P port]
#          [-R num_requests] [-S program] [-s subsystem | sftp_server]
#          [-X sftp_option] destination
$ sftp user@host

使用方法

使用 help 或者 ? 来打印帮助

在 sftp 里输入的 shell 指令, 是针对远程服务器的, 如果想针对本地服务器, 则在指令前面加 l (local)

下载

1
2
3
4
5
6
7
8
# 下载文件
$ get filename
# 递归下载
$ get -r dir
# 指定下载名
$ get remoteFileName localFileName
# 保留文件权限
$ get -P filename

上传

1
2
3
4
5
6
# 上传文件
$ put filename
# 递归上传
$ put -r dir
# 指定上传名
$ put localFileName remoteFileName

在 sftp 里运行本地指令

使用 !前缀, 后面跟本地指令