-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathindex.html
More file actions
392 lines (370 loc) · 19 KB
/
index.html
File metadata and controls
392 lines (370 loc) · 19 KB
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
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
<!doctype html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/x-icon" href="/favicon/favicon.ico" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon/favicon-32x32.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/favicon/apple-touch-icon.png" />
<link rel="manifest" href="/favicon/site.webmanifest" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Primary Meta Tags -->
<title>SSH Key Generator Online - Free Secure Key Generation</title>
<meta id="meta-title" name="title" content="SSH Key Generator Online - Free Secure Key Generation" />
<meta id="meta-description" name="description" content="Generate SSH keys securely in your browser. Support Ed25519, RSA. Works with GitHub, GitLab, Bitbucket. 100% client-side, no data sent to servers." />
<meta name="author" content="SSH Key Generator" />
<meta id="meta-robots" name="robots" content="index, follow" />
<!-- Canonical URL -->
<link id="link-canonical" rel="canonical" href="https://sshkeygenerator.com/" />
<!-- Language alternates -->
<link rel="alternate" hreflang="en" href="https://sshkeygenerator.com/" />
<link rel="alternate" hreflang="zh-Hans" href="https://sshkeygenerator.com/zh-Hans/" />
<link rel="alternate" hreflang="zh-Hant" href="https://sshkeygenerator.com/zh-Hant/" />
<link rel="alternate" hreflang="ja" href="https://sshkeygenerator.com/ja/" />
<link rel="alternate" hreflang="ko" href="https://sshkeygenerator.com/ko/" />
<link rel="alternate" hreflang="es" href="https://sshkeygenerator.com/es/" />
<link rel="alternate" hreflang="pt" href="https://sshkeygenerator.com/pt/" />
<link rel="alternate" hreflang="fr" href="https://sshkeygenerator.com/fr/" />
<link rel="alternate" hreflang="de" href="https://sshkeygenerator.com/de/" />
<link rel="alternate" hreflang="ru" href="https://sshkeygenerator.com/ru/" />
<link rel="alternate" hreflang="it" href="https://sshkeygenerator.com/it/" />
<link rel="alternate" hreflang="nl" href="https://sshkeygenerator.com/nl/" />
<link rel="alternate" hreflang="pl" href="https://sshkeygenerator.com/pl/" />
<link rel="alternate" hreflang="sv" href="https://sshkeygenerator.com/sv/" />
<link rel="alternate" hreflang="he" href="https://sshkeygenerator.com/he/" />
<link rel="alternate" hreflang="da" href="https://sshkeygenerator.com/da/" />
<link rel="alternate" hreflang="nb" href="https://sshkeygenerator.com/nb/" />
<link rel="alternate" hreflang="hi" href="https://sshkeygenerator.com/hi/" />
<link rel="alternate" hreflang="vi" href="https://sshkeygenerator.com/vi/" />
<link rel="alternate" hreflang="tr" href="https://sshkeygenerator.com/tr/" />
<link rel="alternate" hreflang="id" href="https://sshkeygenerator.com/id/" />
<link rel="alternate" hreflang="fi" href="https://sshkeygenerator.com/fi/" />
<link rel="alternate" hreflang="uk" href="https://sshkeygenerator.com/uk/" />
<link rel="alternate" hreflang="ar" href="https://sshkeygenerator.com/ar/" />
<link rel="alternate" hreflang="th" href="https://sshkeygenerator.com/th/" />
<link rel="alternate" hreflang="ro" href="https://sshkeygenerator.com/ro/" />
<link rel="alternate" hreflang="cs" href="https://sshkeygenerator.com/cs/" />
<link rel="alternate" hreflang="bn" href="https://sshkeygenerator.com/bn/" />
<link rel="alternate" hreflang="el" href="https://sshkeygenerator.com/el/" />
<link rel="alternate" hreflang="hu" href="https://sshkeygenerator.com/hu/" />
<link rel="alternate" hreflang="x-default" href="https://sshkeygenerator.com/" />
<!-- Open Graph / Facebook -->
<meta id="meta-og-type" property="og:type" content="website" />
<meta id="meta-og-url" property="og:url" content="https://sshkeygenerator.com/" />
<meta id="meta-og-title" property="og:title" content="SSH Key Generator Online - Free Secure Key Generation" />
<meta id="meta-og-description" property="og:description" content="Generate SSH keys securely in your browser. Support Ed25519, RSA. Works with GitHub, GitLab, Bitbucket. 100% client-side, no data sent to servers." />
<meta id="meta-og-image" property="og:image" content="https://sshkeygenerator.com/og.webp" />
<meta id="meta-og-site-name" property="og:site_name" content="SSH Key Generator" />
<meta id="meta-og-locale" property="og:locale" content="en_US" />
<!-- Twitter -->
<meta property="twitter:card" content="summary_large_image" />
<meta id="meta-twitter-url" property="twitter:url" content="https://sshkeygenerator.com/" />
<meta id="meta-twitter-title" property="twitter:title" content="SSH Key Generator Online - Free Secure Key Generation" />
<meta id="meta-twitter-description" property="twitter:description" content="Generate SSH keys securely in your browser. Support Ed25519, RSA. Works with GitHub, GitLab, Bitbucket. 100% client-side, no data sent to servers." />
<meta id="meta-twitter-image" property="twitter:image" content="https://sshkeygenerator.com/og.webp" />
<!-- Theme Color -->
<meta name="theme-color" content="#0F172A" />
<!-- Theme flash prevention - must be before any CSS -->
<script>
(function() {
var theme = localStorage.getItem('ssh-key-generator-theme') || 'system';
var resolved = theme;
if (theme === 'system') {
resolved = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
}
if (resolved === 'dark') {
document.documentElement.classList.add('dark');
}
document.documentElement.style.colorScheme = resolved;
var metaTheme = document.querySelector('meta[name="theme-color"]');
if (metaTheme) {
metaTheme.setAttribute('content', resolved === 'dark' ? 'hsl(224 0% 4%)' : 'hsl(0 0% 100%)');
}
})();
</script>
<!-- Google Analytics (deferred to protect first paint and privacy tooling scores) -->
<script>
(function () {
var trackingId = 'G-WDT5Z7444Q';
var loaded = false;
var timer = null;
var interactionEvents = ['pointerdown', 'keydown', 'touchstart', 'scroll'];
function cleanup() {
interactionEvents.forEach(function (eventName) {
window.removeEventListener(eventName, loadAnalytics, true);
});
if (timer) {
window.clearTimeout(timer);
timer = null;
}
}
function loadAnalytics() {
if (loaded) return;
loaded = true;
cleanup();
window.dataLayer = window.dataLayer || [];
window.gtag = function () {
window.dataLayer.push(arguments);
};
var script = document.createElement('script');
script.async = true;
script.src = 'https://www.googletagmanager.com/gtag/js?id=' + trackingId;
document.head.appendChild(script);
window.gtag('js', new Date());
window.gtag('config', trackingId, {
anonymize_ip: true,
allow_google_signals: false,
allow_ad_personalization_signals: false,
transport_type: 'beacon'
});
}
if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
return;
}
interactionEvents.forEach(function (eventName) {
window.addEventListener(eventName, loadAnalytics, { passive: true, capture: true, once: true });
});
timer = window.setTimeout(loadAnalytics, 20000);
})();
</script>
<!-- Additional Meta Tags for PWA/Mobile -->
<meta name="application-name" content="SSH Key Generator" />
<meta name="apple-mobile-web-app-title" content="SSH Key Generator" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="format-detection" content="telephone=no" />
<!-- Schema.org structured data - SoftwareApplication -->
<script id="structured-data-website" type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebSite",
"@id": "https://sshkeygenerator.com#website",
"url": "https://sshkeygenerator.com/",
"name": "SSH Key Generator",
"inLanguage": "en",
"publisher": {
"@id": "https://sshkeygenerator.com#organization"
}
}
</script>
<!-- Schema.org structured data - SoftwareApplication -->
<script id="structured-data-page" type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"@id": "https://sshkeygenerator.com/#software-application",
"name": "SSH Key Generator",
"alternateName": "SSH Key Generator Online - Free Secure Key Generation",
"description": "Generate SSH keys securely in your browser. Support Ed25519, RSA. 100% client-side.",
"url": "https://sshkeygenerator.com/",
"image": "https://sshkeygenerator.com/og.webp",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Web Browser",
"browserRequirements": "Requires a modern browser with Web Crypto API support.",
"inLanguage": "en",
"isAccessibleForFree": true,
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"featureList": [
"Ed25519 key generation",
"RSA 2048/4096-bit key generation",
"100% client-side processing",
"OpenSSH format output",
"SHA256 fingerprint calculation",
"Works with GitHub, GitLab, Bitbucket"
],
"screenshot": "https://sshkeygenerator.com/og.webp",
"softwareVersion": "1.0.0",
"author": {
"@id": "https://sshkeygenerator.com#organization"
}
}
</script>
<!-- Schema.org - FAQPage for Rich Results -->
<script id="structured-data-faq" type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"@id": "https://sshkeygenerator.com/#faq",
"url": "https://sshkeygenerator.com/",
"inLanguage": "en",
"mainEntity": [
{
"@type": "Question",
"name": "Is it safe to generate SSH keys online?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, this SSH key generator is 100% safe because all key generation happens entirely in your browser using the Web Crypto API. Your private keys never leave your device and are never transmitted to any server. The source code is open source and auditable on GitHub."
}
},
{
"@type": "Question",
"name": "What is the difference between Ed25519 and RSA?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Ed25519 is a modern elliptic curve algorithm that offers better security with smaller key sizes (256-bit vs 2048-4096-bit RSA). Ed25519 keys are faster to generate and use, and are recommended for most new SSH setups. RSA is older but has wider compatibility with legacy systems."
}
},
{
"@type": "Question",
"name": "How do I add my SSH key to GitHub?",
"acceptedAnswer": {
"@type": "Answer",
"text": "1) Generate your SSH key using this tool, 2) Copy the public key, 3) Go to GitHub Settings > SSH and GPG keys, 4) Click 'New SSH key', 5) Paste your public key and give it a title, 6) Click 'Add SSH key'. Test with: ssh -T git@github.com"
}
},
{
"@type": "Question",
"name": "What key size should I use for RSA?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For RSA keys, 4096-bit is recommended for maximum security. 2048-bit is the minimum acceptable size and offers adequate security for most purposes. Keys smaller than 2048-bit are considered insecure and should not be used."
}
},
{
"@type": "Question",
"name": "Can I use this SSH key generator offline?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes! This is a Progressive Web App (PWA) that works offline. After your first visit, you can install it as an app on your device and generate SSH keys without an internet connection. All cryptographic operations run locally in your browser."
}
},
{
"@type": "Question",
"name": "Should I use a passphrase for my SSH key?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, using a passphrase is highly recommended. A passphrase adds an extra layer of security - even if someone gains access to your private key file, they cannot use it without the passphrase. Use a strong, memorable passphrase for important keys."
}
},
{
"@type": "Question",
"name": "Can I use the same SSH key for multiple servers?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, you can use the same SSH public key on multiple servers. However, for better security practices, consider using different keys for different purposes (e.g., work vs personal, production vs development). This limits exposure if one key is compromised."
}
},
{
"@type": "Question",
"name": "What is an SSH key fingerprint?",
"acceptedAnswer": {
"@type": "Answer",
"text": "An SSH key fingerprint is a short, unique identifier derived from your public key using a hash function (SHA256 or MD5). It's used to verify key authenticity when connecting to servers. The fingerprint helps you confirm you're connecting to the correct server."
}
},
{
"@type": "Question",
"name": "What is the best SSH key algorithm in 2026?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Ed25519 is the recommended algorithm in 2026 for most use cases. It provides excellent security with a 256-bit key size, fast performance, and is supported by all modern SSH implementations. Only use RSA if you need compatibility with legacy systems."
}
},
{
"@type": "Question",
"name": "What is the best SSH key generator online?",
"acceptedAnswer": {
"@type": "Answer",
"text": "This SSH key generator is one of the best free online options because it runs 100% in your browser, supports modern Ed25519 and RSA algorithms, works offline as a PWA, and never sends your private keys to any server."
}
},
{
"@type": "Question",
"name": "What is the authorized_keys file?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The authorized_keys file (located at ~/.ssh/authorized_keys on Linux/macOS servers) contains a list of public keys that are allowed to connect to that account. Each line is one public key. Add your public key to this file to enable passwordless SSH login."
}
},
{
"@type": "Question",
"name": "What permissions should my SSH private key have?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Your SSH private key should have restricted permissions. On Linux/macOS, use 'chmod 600 ~/.ssh/id_ed25519' (owner read/write) or 'chmod 400' (owner read-only). SSH will refuse to use a key with permissive permissions. The .ssh directory should be 700."
}
}
]
}
</script>
<!-- Schema.org - HowTo for Rich Results -->
<script id="structured-data-howto" type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"@id": "https://sshkeygenerator.com/#how-to",
"name": "How to Generate SSH Keys Online",
"description": "Generate secure SSH keys in your browser using this free, client-side SSH key generator that supports Ed25519 and RSA algorithms.",
"image": "https://sshkeygenerator.com/og.webp",
"totalTime": "PT1M",
"inLanguage": "en",
"tool": [
{
"@type": "HowToTool",
"name": "Web browser (Chrome, Firefox, Safari, Edge)"
}
],
"step": [
{
"@type": "HowToStep",
"position": 1,
"name": "Select Algorithm",
"text": "Choose your preferred SSH key algorithm. Ed25519 is recommended for modern systems. RSA (4096-bit) is available for legacy compatibility.",
"url": "https://sshkeygenerator.com/#how-to-step-1"
},
{
"@type": "HowToStep",
"position": 2,
"name": "Add Comment",
"text": "Enter an optional comment to identify your key, typically your email address (e.g., user@example.com). This helps identify the key on servers.",
"url": "https://sshkeygenerator.com/#how-to-step-2"
},
{
"@type": "HowToStep",
"position": 3,
"name": "Generate Keys",
"text": "Click the Generate button. Your SSH key pair will be created instantly in your browser. No data is sent to any server.",
"url": "https://sshkeygenerator.com/#how-to-step-3"
},
{
"@type": "HowToStep",
"position": 4,
"name": "Save Your Keys",
"text": "Download both keys: the public key (.pub) to add to servers, and the private key to keep secure on your device. Never share your private key.",
"url": "https://sshkeygenerator.com/#how-to-step-4"
},
{
"@type": "HowToStep",
"position": 5,
"name": "Add to Server",
"text": "Copy your public key and add it to the authorized_keys file on your server, or add it to your GitHub/GitLab/Bitbucket account settings.",
"url": "https://sshkeygenerator.com/#how-to-step-5"
}
]
}
</script>
<!-- Schema.org - Organization -->
<script id="structured-data-organization" type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://sshkeygenerator.com#organization",
"name": "SSH Key Generator",
"url": "https://sshkeygenerator.com",
"logo": "https://sshkeygenerator.com/favicon/android-chrome-512x512.png",
"sameAs": [
"https://github.com/Fechin/ssh-key-generator"
]
}
</script>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>