-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
/
Copy pathsftp.ts
293 lines (291 loc) · 9.24 KB
/
sftp.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
import { knownHosts, configHosts } from "./ssh";
const completionSpec: Fig.Spec = {
name: "sftp",
description: "OpenSSH secure file transfer",
args: [
{
name: "sources",
description: "File or directory, local or remote ([user@]host:[path])",
isVariadic: true,
generators: [
knownHosts,
configHosts,
{ template: ["history", "filepaths", "folders"] },
],
},
{
name: "target",
description: "File or directory, local or remote ([user@]host:[path])",
generators: [
knownHosts,
configHosts,
{ template: ["history", "filepaths", "folders"] },
],
},
],
options: [
{
name: ["--help", "-h"],
description: "Show help for sftp",
},
{
name: "-4",
description: "Forces scp to use IPv4 addresses only",
},
{
name: "-6",
description: "Forces scp to use IPv6 addresses only",
},
{
name: "-A",
description:
"Allows forwarding of ssh-agent(1) to the remote system. The default is not to forward an authentication agent",
},
{
name: "-a",
description: `Attempt to continue interrupted transfers rather than overwriting
existing partial or complete copies of files. If the partial
contents differ from those being transferred, then the resultant
file is likely to be corrupt`,
},
{
name: "-B",
description: `Specify the size of the buffer that sftp uses when transferring
files. Larger buffers require fewer round trips at the cost of
higher memory consumption. The default is 32768 bytes`,
args: {
name: "buffer_size",
description: "The buffer size",
suggestions: ["32768"],
default: "32768",
},
},
{
name: "-b",
description: `Batch mode reads a series of commands from an input batchfile
instead of stdin. Since it lacks user interaction it should be
used in conjunction with non-interactive authentication to obviate
the need to enter a password at connection time (see sshd(8) and
ssh-keygen(1) for details)`,
args: {
name: "batchfile",
description: "The batch file",
template: "filepaths",
},
},
{
name: "-C",
description:
"Compression enable. Passes the -C flag to ssh(1) to enable compression",
},
{
name: "-c",
description:
"Selects the cipher to use for encrypting the data transfer. This option is directly passed to ssh(1)",
args: {
name: "cipher",
description: "The selected cipher specification",
},
},
{
name: "-D",
description: `Connect directly to a local sftp server (rather than via ssh(1)).
This option may be useful in debugging the client and server`,
args: {
name: "sftp_server_path",
description: "Path to the SFTP server",
},
},
{
name: "-F",
description:
"Specifies an alternative per-user configuration file for ssh. This option is directly passed to ssh(1)",
args: {
name: "ssh_config",
description: "The selected ssh config",
},
},
{
name: "-f",
description:
"Requests that files be flushed to disk immediately after transfer",
},
{
name: "-i",
description:
"Selects the file from which the identity (private key) for public key authentication is read. This option is directly passed to ssh(1)",
args: {
name: "identity_file",
description: "Specified identity file",
},
},
{
name: "-J",
description: `Connect to the target host by first making an scp connection to the
jump host described by destination and then establishing a TCP
forwarding to the ultimate destination from there. Multiple jump
hops may be specified separated by comma characters. This is a
shortcut to specify a ProxyJump configuration directive. This
option is directly passed to ssh(1)`,
args: {
name: "destination",
description: "Scp destination",
},
},
{
name: "-l",
description: "Limits the used bandwidth, specified in Kbit/s",
args: {
name: "limit",
description: "Limit bandwidth in Kbit/s",
},
},
{
name: "-N",
description:
"Disables quiet mode, e.g. to override the implicit quiet mode set by the -b flag",
},
{
name: "-o",
description: `Can be used to pass options to ssh in the format used in
ssh_config(5). This is useful for specifying options for which
there is no separate scp command-line flag. For full details of
the options listed below, and their possible values, see
ssh_config(5)`,
args: {
name: "option",
suggestions: [
{ name: "AddressFamily" },
{ name: "BatchMode" },
{ name: "BindAddress" },
{ name: "ChallengeResponseAuthentication" },
{ name: "CheckHostIP" },
{ name: "Cipher" },
{ name: "Ciphers" },
{ name: "ClearAllForwardings" },
{ name: "Compression" },
{ name: "CompressionLevel" },
{ name: "ConnectionAttempts" },
{ name: "ConnectTimeout" },
{ name: "ControlMaster" },
{ name: "ControlPath" },
{ name: "ControlPersist" },
{ name: "DynamicForward" },
{ name: "EscapeChar" },
{ name: "ExitOnForwardFailure" },
{ name: "ForwardAgent" },
{ name: "ForwardX11" },
{ name: "ForwardX11Timeout" },
{ name: "ForwardX11Trusted" },
{ name: "GatewayPorts" },
{ name: "GlobalKnownHostsFile" },
{ name: "GSSAPIAuthentication" },
{ name: "GSSAPIDelegateCredentials" },
{ name: "HashKnownHosts" },
{ name: "Host" },
{ name: "HostbasedAuthentication" },
{ name: "HostKeyAlgorithms" },
{ name: "HostKeyAlias" },
{ name: "HostName" },
{ name: "IdentityFile" },
{ name: "IdentitiesOnly" },
{ name: "IPQoS" },
{ name: "KbdInteractiveAuthentication" },
{ name: "KbdInteractiveDevices" },
{ name: "KexAlgorithms" },
{ name: "LocalCommand" },
{ name: "LocalForward" },
{ name: "LogLevel" },
{ name: "MACs" },
{ name: "NoHostAuthenticationForLocalhost" },
{ name: "NumberOfPasswordPrompts" },
{ name: "PasswordAuthentication" },
{ name: "PermitLocalCommand" },
{ name: "PKCS11Provider" },
{ name: "Port" },
{ name: "PreferredAuthentications" },
{ name: "Protocol" },
{ name: "ProxyCommand" },
{ name: "PubkeyAuthentication" },
{ name: "RekeyLimit" },
{ name: "RequestTTY" },
{ name: "RhostsRSAAuthentication" },
{ name: "RSAAuthentication" },
{ name: "SendEnv" },
{ name: "ServerAliveInterval" },
{ name: "ServerAliveCountMax" },
{ name: "StrictHostKeyChecking" },
{ name: "TCPKeepAlive" },
{ name: "Tunnel" },
{ name: "TunnelDevice" },
{ name: "UsePrivilegedPort" },
{ name: "User" },
{ name: "UserKnownHostsFile" },
{ name: "VerifyHostKeyDNS" },
{ name: "VisualHostKey" },
{ name: "XAuthLocation" },
],
},
},
{
name: "-P",
description: `Specifies the port to connect to on the remote host. Note that
this option is written with a capital ‘P’, because -p is already
reserved for preserving the times and modes of the file`,
args: {
name: "port",
},
},
{
name: "-p",
description:
"Preserves modification times, access times, and modes from the original file",
},
{
name: "-q",
description:
"Quiet mode: disables the progress meter as well as warning and diagnostic messages from ssh(1)",
},
{
name: "-R",
description: `Specify how many requests may be outstanding at any one time.
Increasing this may slightly improve file transfer speed but will
increase memory usage. The default is 64 outstanding requests`,
args: {
name: "num_requests",
description: "The number of requests",
suggestions: ["64"],
default: "64",
},
},
{
name: "-r",
description:
"Recursively copy entire directories. Note that scp follows symbolic links encountered in the tree traversal",
},
{
name: "-S",
description:
"Name of program to use for the encrypted connection. The program must understand ssh(1) options",
args: {
name: "program",
},
},
{
name: "-s",
description: `Specifies the SSH2 subsystem or the path for an sftp server on the
remote host. A path is useful when the remote sshd(8) does not
have an sftp subsystem configured`,
args: {
name: "subsystem | sftp_server",
description: "Path to the SFTP server",
},
},
{
name: "-v",
description:
"Verbose mode. Causes scp and ssh(1) to print debugging messages about their progress. This is helpful in debugging connection, authentication, and configuration problems",
},
],
};
export default completionSpec;