命令行手册

Man » sftp 手册在线 - `sftp` 手册页的详细在线文档

🌍
sftp — OpenSSH 安全文件传输

概要

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 是一个文件传输程序,类似于 ftp(1),它通过加密的 ssh(1) 传输执行所有操作。它还可以使用 ssh 的许多功能,例如公钥身份验证和压缩。

目标可以指定为 [user@]host[:path],也可以指定为 URI 形式: sftp://[user@]host[:port][/path]。

如果目标包含路径,并且该路径不是目录,则 sftp 会自动检索文件(如果使用非交互式身份验证方法);否则,它会在成功进行交互式身份验证后进行检索。

如果没有指定路径,或者路径是目录,sftp 将登录到指定的 host 并进入交互式命令模式,如果指定了远程目录,则会切换到该目录。 可选的尾部斜杠可用于强制将路径解释为目录。

由于目标格式使用冒号字符来分隔主机名和路径名或端口 号,因此 IPv6 地址必须包含在方括号中,以避免歧义。

选项如下:

-4      强制 sftp 仅使用 IPv4 地址。

-6      强制 sftp 仅使用 IPv6 地址。

-A      允许将 ssh-agent(1) 转发到远程系统。默认情况下,不转发身份验证代理。

-a      尝试继续中断的传输,而不是覆盖现有的部分或完整的副本。如果部分内容与正在传输的内容不同,
则结果文件很可能会损坏。

-B buffer_size

指定 sftp 在传输文件时使用的缓冲区大小。较大的缓冲区 需要更少的往返次数,但会增加内存消耗。默认值为 32768 字节。

-b batchfile

批处理模式从输入批处理文件读取一系列命令,而不是从标准输入读取。由于它 缺乏用户交互,因此应与非交互式身份验证一起使用,以避免在连接时输入密码(有关详细信息,请参阅 sshd(8) 和 ssh-keygen(1))。

可以使用“-”作为批处理文件来指示标准输入。如果以下任何命令失败,sftp 将中止:get、put、reget、reput、rename、ln、rm、mkdir、chdir、ls、
lchdir、copy、cp、chmod、chown、chgrp、lpwd、df、symlink 和 lmkdir。


可以通过在命令前加上“-”字符,来禁用每个命令的错误终止(例如,-rm /tmp/blah\*)。 可以通过在命令前加上“@”字符来禁止命令的回显。 这两个前缀可以以任何顺序组合,例如 -@ls /bsd。

-C 启用压缩(通过 ssh 的 -C 标志)。

-c cipher
选择用于加密数据传输的密码。 此选项直接传递给 [ssh]({filename}../../ssh)(1)。

-D sftp_server_command
直接连接到本地 sftp 服务器(而不是通过 [ssh]({filename}../../ssh)(1))。 可以指定命令和参数,例如 "/path/sftp-server -el debug3"。 此选项可能对调试客户端和服务器很有用。

-F ssh_config
为 [ssh]({filename}../../ssh)(1) 指定替代的每个用户的配置文件。 此选项直接传递给 [ssh]({filename}../../ssh)(1)。

-f 请求在传输后立即将文件刷新到磁盘。 在上传文件时,仅当服务器实现“\_”扩展时,才启用此功能。

-i identity_file
选择从中读取用于公共密钥身份验证的身份(私钥)的文件。 此选项直接传递给 [ssh]({filename}../../ssh)(1)。

-J destination
首先通过到 destination 中描述的跳转主机建立 sftp 连接,然后从那里建立 TCP 转发到最终目标主机,从而连接到目标主机。 可以使用逗号分隔符指定多个跳转。 这是指定 ProxyJump 配置指令的快捷方式。 此选项直接传递给 [ssh]({filename}../../ssh)(1)。

-l limit
限制使用的带宽,以 Kbit/s 为单位。

-N 禁用静默模式,例如用于覆盖由 -b 标志设置的隐式静默模式。

-o ssh_option
可用于以 ssh_config(5) 中使用的格式将选项传递给 ssh。 这对于指定没有单独的 sftp 命令行标志的选项很有用。 例如,要指定备用端口,请使用:sftp -oPort=24。 有关下面列出的选项及其可能值的完整详细信息,请参阅 ssh_config(5)。

AddKeysToAgent
AddressFamily
BatchMode
BindAddress
BindInterface
CASignatureAlgorithms
CanonicalDomains
CanonicalizeFallbackLocal
CanonicalizeHostname
CanonicalizeMaxDots
CanonicalizePermittedCNAMEs
CertificateFile
ChannelTimeout
CheckHostIP
Ciphers
ClearAllForwardings
Compression
ConnectTimeout
ConnectionAttempts
ControlMaster
ControlPath
ControlPersist
DynamicForward
EnableEscapeCommandline
EnableSSHKeysign
EscapeChar
ExitOnForwardFailure
FingerprintHash
ForkAfterAuthentication
ForwardAgent
ForwardX11
ForwardX11Timeout
ForwardX11Trusted
GSSAPIAuthentication
GSSAPIDelegateCredentials
GatewayPorts
GlobalKnownHostsFile
HashKnownHosts
Host
HostKeyAlgorithms
HostKeyAlias
HostbasedAcceptedAlgorithms
HostbasedAuthentication
Hostname
IPQoS
IdentitiesOnly
IdentityAgent
IdentityFile
IgnoreUnknown
Include
KbdInteractiveAuthentication
KbdInteractiveDevices
KexAlgorithms
KnownHostsCommand
LocalCommand
LocalForward
LogLevel
LogVerbose
MACs
NoHostAuthenticationForLocalhost
NumberOfPasswordPrompts
ObscureKeystrokeTiming
PKCS11Provider
PasswordAuthentication
PermitLocalCommand
PermitRemoteOpen
Port
PreferredAuthentications
ProxyCommand
ProxyJump
ProxyUseFdpass
PubkeyAcceptedAlgorithms
PubkeyAuthentication
RekeyLimit
RemoteCommand
RemoteForward
RequestTTY
RequiredRSASize
RevokedHostKeys
SecurityKeyProvider
SendEnv
ServerAliveCountMax
ServerAliveInterval
SessionType
SetEnv
StdinNull
StreamLocalBindMask
StreamLocalBindUnlink
StrictHostKeyChecking
SyslogFacility
TCPKeepAlive
Tag
Tunnel
TunnelDevice
UpdateHostKeys
User
UserKnownHostsFile
VerifyHostKeyDNS
VisualHostKey
XAuthLocation

-P port

指定连接到远程主机上的端口。

-p      保留原始文件传输后的修改时间、访问时间和模式。

-q      静默模式:禁用进度条以及来自 [ssh]({filename}../../ssh)(1) 的警告和诊断消息。

-R num_requests

指定任何时候可以有多少个未完成的请求。 增加此值可能会略微提高文件传输速度,但会增加内存使用量。 默认值为 64 个未完成的请求。

-r      递归复制上传和下载整个目录。 请注意,sftp 不会跟踪在树遍历中遇到的符号链接。

-S program

用于加密连接的程序的名称。 该程序必须理解 ssh(1) 选项。

-s subsystem | sftp_server

指定远程主机上的 SSH2 子系统或 sftp 服务器的路径。 当远程 sshd(8) 没有配置 sftp 子系统时,路径很有用。

-v      提高日志记录级别。 此选项也会传递给 ssh。

-X sftp_option

指定控制 SFTP 协议行为方面的选项。 有效的选项是:

nrequests=value

控制在下载或上传期间,任何时候可以有多少个并发 SFTP 读取或写入请求。 默认情况下,可以同时进行 64 个请求。

buffer=value

控制下载或上传期间单个 SFTP 读取/写入操作的最大缓冲区大小。 默认情况下,使用 32KB 的缓冲区。

交互式命令

进入交互模式后,sftp 了解与 ftp(1) 中的命令类似的命令集。 命令不区分大小写。 包含空格的路径名必须用引号括起来。 路径名中包含的 glob(3) 识别的任何特殊字符都必须用反斜杠 (‘\’) 进行转义。

bye     退出 sftp。

cd [path]

将远程目录更改为 path。 如果未指定 path,则更改为会话开始时的目录。


chgrp [-h] grp path

将文件路径 path 的组更改为 grp。path 可以包含 glob(7) 字符,并且可以匹配多个文件。grp 必须是数字 GID。

如果指定了 -h 标志,则不会跟踪符号链接。请注意,这仅由实现 "_" 扩展的服务器支持。

chmod [-h] mode path

将文件路径 path 的权限更改为 mode。path 可以包含 glob(7) 字符,并且可以匹配多个文件。

如果指定了 -h 标志,则不会跟踪符号链接。请注意,这仅由实现 "_" 扩展的服务器支持。

chown [-h] own path

将文件路径 path 的所有者更改为 own。path 可以包含 glob(7) 字符,并且可以匹配多个文件。own 必须是数字 UID。

如果指定了 -h 标志,则不会跟踪符号链接。请注意,这仅由实现 "_" 扩展的服务器支持。

copy oldpath newpath

将远程文件从 oldpath 复制到 newpath。

请注意,这仅由实现“copy-data”扩展的服务器支持。

cp oldpath newpath

copy 命令的别名。

df [-hi] [path]

显示包含当前目录(或指定路径 path)的文件系统的使用信息。如果指定了 -h 标志,则将使用“人类可读”后缀显示容量信息。-i 标志请求显示 inode 信息,以及容量信息。此命令仅由实现“_”扩展的服务器支持。

exit    退出 sftp。

get [-afpR] remote-path [local-path]

检索 remote-path 并将其存储在本地机器上。如果未指定本地路径名,则使用它在远程机器上具有的相同名称。remote-path 可以包含 glob(7) 字符,并且可以匹配多个文件。如果这样并且指定了 local-path,则 local-path 必须指定一个目录。

如果指定了 -a 标志,则尝试恢复现有文件的部分传输。请注意,恢复假定本地文件的任何部分副本都与远程副本匹配。如果远程文件内容与部分本地副本不同,则结果文件可能会损坏。

如果指定了 -f 标志,则在文件传输完成后调用 fsync(2) 以将文件刷新到磁盘。

如果指定了 -p 标志,则还将复制完整的文件权限和访问时间。

如果指定了 -R 标志,则将递归复制目录。请注意,sftp 在执行递归传输时不会跟踪符号链接。

help    显示帮助文本。

lcd [path]

将本地目录更改为 path。如果未指定 path,则更改为本地用户的家目录。

lls [ls-options [path]]

显示本地目录中 path 或当前目录(如果未指定 path)的列表。ls-options 可以包含本地系统 ls(1) 命令支持的任何标志。path 可以包含 glob(7) 字符,并且可以匹配多个文件。


lmkdir path
在本地创建由 path 指定的目录。

ln [-s] oldpath newpath
从 oldpath 创建到 newpath 的链接。 如果指定了 -s 标志,则创建的链接是符号链接,否则是硬链接。

lpwd
打印本地工作目录。

ls [-1afhlnrSt] [path]
显示远程目录中 path 或当前目录的列表。 path 可以包含 glob(7) 字符,并且可以匹配多个文件。

以下标志被识别,并相应地改变 ls 的行为:

-1
生成单列输出。

-a
列出以点(‘.’)开头的文件。

-f
不要对列表进行排序。 默认排序顺序是词法顺序。

-h
与长格式选项一起使用时,使用单位后缀:字节、千字节、兆字节、千兆字节、太字节和拍字节,以减少数字到四个或更少的位数,使用 2 的幂(K=1024,M=1048576 等)。

-l
显示其他详细信息,包括权限和所有权信息。

-n
生成一个长列表,以数字形式显示用户和组信息。

-r
反转列表的排序顺序。

-S
按文件大小对列表进行排序。

-t
按上次修改时间对列表进行排序。

lumask umask
将本地 umask 设置为 umask。

mkdir path
在远程创建由 path 指定的目录。

progress
切换显示进度条。

put [-afpR] local-path [remote-path]
上传 local-path 并将其存储在远程机器上。 如果未指定远程路径名,则它将具有与本地机器上相同的名称。 local-path 可以包含 glob(7) 字符,并且可以匹配多个文件。 如果是,并且指定了 remote-path,则 remote-path 必须指定一个目录。

如果指定了 -a 标志,则尝试恢复现有文件的部分传输。 请注意,恢复假定远程文件的任何部分副本与本地副本匹配。 如果本地文件内容与远程本地副本不同,则结果文件可能会损坏。

如果指定了 -f 标志,则将向服务器发送请求,以便在文件传输后调用 fsync(2)。 请注意,这仅由实现“_”扩展的服务器支持。

如果指定了 -p 标志,则还将复制完整的文件权限和访问时间。

如果指定了 -R 标志,则将递归复制目录。 请注意,sftp 在执行递归传输时不跟踪符号链接。

pwd
显示远程工作目录。

quit
退出 sftp。

reget [-fpR] remote-path [local-path]
恢复下载 remote-path。 相当于使用设置了 -a 标志的 get 命令。

reput [-fpR] local-path [remote-path]
恢复上传 local-path。 相当于使用设置了 -a 标志的 put 命令。

rename oldpath newpath

将远程文件从 oldpath 重命名为 newpath。

rm path

删除指定的远程文件。

rmdir path

删除指定的远程目录。

symlink oldpath newpath

从 oldpath 创建一个指向 newpath 的符号链接。

version

显示 sftp 协议版本。

!command

在本地 shell 中执行命令。

!

转义到本地 shell。

?

help 的同义词。

参见

ftp(1), ls(1), scp(1), ssh(1), ssh-add(1), ssh-keygen(1), ssh_config(5), glob(7), sftp-server(8), sshd(8)

T. Ylonen 和 S. Lehtinen,《SSH 文件传输协议》,draft-ietf-secsh-filexfer-00.txt,2001 年 1 月,工作草案。