aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src/org/eclipse/jgit/transport/SshConstants.java
blob: 41dbdcab5158b64f91717178abf47dfbf3c25c92 (plain)
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
/*
 * Copyright (C) 2018, 2021 Thomas Wolf <thomas.wolf@paranor.ch> and others
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Distribution License v. 1.0 which is available at
 * https://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

package org.eclipse.jgit.transport;

import org.eclipse.jgit.lib.Constants;

/**
 * Constants relating to ssh.
 *
 * @since 5.2
 */
@SuppressWarnings("nls")
public final class SshConstants {

	private SshConstants() {
		// No instances, please.
	}

	/** IANA assigned port number for ssh. */
	public static final int SSH_DEFAULT_PORT = 22;

	/** URI scheme for ssh. */
	public static final String SSH_SCHEME = "ssh";

	/** URI scheme for sftp. */
	public static final String SFTP_SCHEME = "sftp";

	/** Default name for a ssh directory. */
	public static final String SSH_DIR = ".ssh";

	/** Name of the ssh config file. */
	public static final String CONFIG = Constants.CONFIG;

	/** Default name of the user "known hosts" file. */
	public static final String KNOWN_HOSTS = "known_hosts";

	// Config file keys

	/**
	 * Property to control whether private keys are added to an SSH agent, if
	 * one is running, after having been loaded.
	 *
	 * @since 6.1
	 */
	public static final String ADD_KEYS_TO_AGENT = "AddKeysToAgent";

	/** Key in an ssh config file. */
	public static final String BATCH_MODE = "BatchMode";

	/** Key in an ssh config file. */
	public static final String CANONICAL_DOMAINS = "CanonicalDomains";

	/** Key in an ssh config file. */
	public static final String CERTIFICATE_FILE = "CertificateFile";

	/** Key in an ssh config file. */
	public static final String CIPHERS = "Ciphers";

	/** Key in an ssh config file. */
	public static final String COMPRESSION = "Compression";

	/** Key in an ssh config file. */
	public static final String CONNECTION_ATTEMPTS = "ConnectionAttempts";

	/**
	 * An OpenSSH time value for the connection timeout. In OpenSSH, this
	 * includes everything until the end of the initial key exchange; in JGit it
	 * covers only the underlying TCP connect.
	 *
	 * @since 6.1
	 */
	public static final String CONNECT_TIMEOUT = "ConnectTimeout";

	/** Key in an ssh config file. */
	public static final String CONTROL_PATH = "ControlPath";

	/** Key in an ssh config file. */
	public static final String GLOBAL_KNOWN_HOSTS_FILE = "GlobalKnownHostsFile";

	/**
	 * Key in an ssh config file.
	 *
	 * @since 5.5
	 */
	public static final String HASH_KNOWN_HOSTS = "HashKnownHosts";

	/** Key in an ssh config file. */
	public static final String HOST = "Host";

	/** Key in an ssh config file. */
	public static final String HOST_KEY_ALGORITHMS = "HostKeyAlgorithms";

	/** Key in an ssh config file. */
	public static final String HOST_NAME = "HostName";

	/** Key in an ssh config file. */
	public static final String IDENTITIES_ONLY = "IdentitiesOnly";

	/** Key in an ssh config file. */
	public static final String IDENTITY_AGENT = "IdentityAgent";

	/** Key in an ssh config file. */
	public static final String IDENTITY_FILE = "IdentityFile";

	/** Key in an ssh config file. */
	public static final String KEX_ALGORITHMS = "KexAlgorithms";

	/** Key in an ssh config file. */
	public static final String LOCAL_COMMAND = "LocalCommand";

	/** Key in an ssh config file. */
	public static final String LOCAL_FORWARD = "LocalForward";

	/** Key in an ssh config file. */
	public static final String MACS = "MACs";

	/** Key in an ssh config file. */
	public static final String NUMBER_OF_PASSWORD_PROMPTS = "NumberOfPasswordPrompts";

	/**
	 * Path to a shared library of a PKCS11 key provider, or "none".
	 * <p>
	 * If set and not "none", the provider's keys should be used.
	 * </p>
	 *
	 * @since 6.7
	 */
	public static final String PKCS11_PROVIDER = "PKCS11Provider";

	/**
	 * Non-standard JGit addition: specify the PKCS#11 slot list index of the
	 * token to use. A positive number; defaults to zero; ignored if negative
	 * (in which case zero is used, too).
	 *
	 * @since 6.7
	 */
	public static final String PKCS11_SLOT_LIST_INDEX = "PKCS11SlotListIndex";

	/** Key in an ssh config file. */
	public static final String PORT = "Port";

	/** Key in an ssh config file. */
	public static final String PREFERRED_AUTHENTICATIONS = "PreferredAuthentications";

	/**
	 * Key in an ssh config file; defines signature algorithms for public key
	 * authentication as a comma-separated list.
	 *
	 * @since 5.11.1
	 */
	public static final String PUBKEY_ACCEPTED_ALGORITHMS = "PubkeyAcceptedAlgorithms";

	/** Key in an ssh config file. */
	public static final String PROXY_COMMAND = "ProxyCommand";

	/**
	 * Comma-separated list of jump hosts, defining a jump host chain <em>in
	 * reverse order</em>. Each jump host is a SSH URI or "[user@]host[:port]".
	 * <p>
	 * Reverse order means: to connect {@literal A -> B -> target}, one can do
	 * in {@code ~/.ssh/config} either of:
	 * </p>
	 *
	 * <pre>
	 * Host target
	 *   ProxyJump B,A
	 * </pre>
	 * <p>
	 * <em>or</em>
	 * </p>
	 *
	 * <pre>
	 * Host target
	 *   ProxyJump B
	 *
	 * Host B
	 *   ProxyJump A
	 * </pre>
	 *
	 * @since 5.10
	 */
	public static final String PROXY_JUMP = "ProxyJump";

	/** Key in an ssh config file. */
	public static final String REMOTE_COMMAND = "RemoteCommand";

	/** Key in an ssh config file. */
	public static final String REMOTE_FORWARD = "RemoteForward";

	/**
	 * (Absolute) path to a middleware library the SSH agent shall use to load
	 * SK (U2F) keys.
	 *
	 * @since 6.1
	 */
	public static final String SECURITY_KEY_PROVIDER = "SecurityKeyProvider";

	/** Key in an ssh config file. */
	public static final String SEND_ENV = "SendEnv";

	/** Key in an ssh config file. */
	public static final String STRICT_HOST_KEY_CHECKING = "StrictHostKeyChecking";

	/** Key in an ssh config file. */
	public static final String USER = "User";

	/** Key in an ssh config file. */
	public static final String USER_KNOWN_HOSTS_FILE = "UserKnownHostsFile";

	// Values

	/** Flag value. */
	public static final String YES = "yes";

	/** Flag value. */
	public static final String ON = "on";

	/** Flag value. */
	public static final String TRUE = "true";

	/** Flag value. */
	public static final String NO = "no";

	/** Flag value. */
	public static final String OFF = "off";

	/** Flag value. */
	public static final String FALSE = "false";

	/**
	 * Property value. Some keys accept a special 'none' value to override and
	 * clear a setting otherwise contributed by another host entry, for instance
	 * {@link #PROXY_COMMAND} or {@link #PROXY_JUMP}. Example:
	 *
	 * <pre>
	 * Host bastion.example.org
	 *   ProxyJump none
	 *
	 * Host *.example.org
	 *   ProxyJump bastion.example.org
	 * </pre>
	 * <p>
	 * OpenSSH supports this since OpenSSH 7.8.
	 * </p>
	 *
	 * @since 6.0
	 */
	public static final String NONE = "none";

	// Default identity file names

	/** Name of the default RSA private identity file. */
	public static final String ID_RSA = "id_rsa";

	/** Name of the default DSA private identity file. */
	public static final String ID_DSA = "id_dsa";

	/** Name of the default ECDSA private identity file. */
	public static final String ID_ECDSA = "id_ecdsa";

	/** Name of the default ED25519 private identity file. */
	public static final String ID_ED25519 = "id_ed25519";

	/** All known default identity file names. */
	public static final String[] DEFAULT_IDENTITIES = { //
			ID_RSA, ID_DSA, ID_ECDSA, ID_ED25519
	};

	/**
	 * Name of the environment variable holding the Unix domain socket for
	 * communication with an SSH agent.
	 *
	 * @since 6.1
	 */
	public static final String ENV_SSH_AUTH_SOCKET = "SSH_AUTH_SOCK";
}