Skip to content

Commit 3a974f3

Browse files
authored
Merge pull request #2 from luizomf/feat/keygen-permissions
feat(keygen): add file permissions section
2 parents 8f13c9c + 67b0661 commit 3a974f3

1 file changed

Lines changed: 67 additions & 0 deletions

File tree

src/pages/keygen.astro

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,42 @@ import Footer from '../components/Footer.astro';
130130
<code>~/.ssh/authorized_keys</code> no servidor.
131131
</p>
132132
</section>
133+
134+
<!-- Permissions -->
135+
<section class="section card">
136+
<h2 class="section__title">Permissões necessárias</h2>
137+
<p class="text-secondary" style="font-size: 0.875rem; margin-bottom: 0.75rem;">
138+
O SSH exige permissões restritas nos arquivos de chave. Sem isso, o cliente recusa usar a chave.
139+
</p>
140+
<div class="code-preview-wrapper">
141+
<button class="btn btn--sm copy-btn" data-copy="output-permissions">Copiar</button>
142+
<div class="code-preview">
143+
<code id="output-permissions"></code>
144+
</div>
145+
</div>
146+
<div class="permissions-table">
147+
<div class="permissions-row">
148+
<code>~/.ssh/</code>
149+
<span class="permissions-value">700</span>
150+
<span class="text-muted">drwx------</span>
151+
</div>
152+
<div class="permissions-row">
153+
<code id="perm-privkey-name">~/.ssh/id_ed25519</code>
154+
<span class="permissions-value">600</span>
155+
<span class="text-muted">-rw-------</span>
156+
</div>
157+
<div class="permissions-row">
158+
<code id="perm-pubkey-name">~/.ssh/id_ed25519.pub</code>
159+
<span class="permissions-value">644</span>
160+
<span class="text-muted">-rw-r--r--</span>
161+
</div>
162+
<div class="permissions-row">
163+
<code>~/.ssh/authorized_keys</code>
164+
<span class="permissions-value">600</span>
165+
<span class="text-muted">-rw-------</span>
166+
</div>
167+
</div>
168+
</section>
133169
</div>
134170

135171
<Footer />
@@ -235,6 +271,31 @@ import Footer from '../components/Footer.astro';
235271
display: none !important;
236272
}
237273

274+
.permissions-table {
275+
margin-top: 1rem;
276+
display: flex;
277+
flex-direction: column;
278+
gap: 0.5rem;
279+
}
280+
281+
.permissions-row {
282+
display: flex;
283+
align-items: center;
284+
gap: 1rem;
285+
font-size: 0.85rem;
286+
font-family: var(--font-mono);
287+
}
288+
289+
.permissions-row code {
290+
min-width: 14ch;
291+
}
292+
293+
.permissions-value {
294+
color: var(--accent);
295+
font-weight: 700;
296+
min-width: 3ch;
297+
}
298+
238299
@media (max-width: 640px) {
239300
.type-selector {
240301
flex-direction: column;
@@ -289,6 +350,12 @@ import Footer from '../components/Footer.astro';
289350
const filename = currentType === 'ed25519' ? 'id_ed25519' : 'id_rsa';
290351
$<HTMLElement>('output-install').textContent = `ssh-copy-id -i ~/.ssh/${filename}.pub usuario@servidor`;
291352

353+
// Permissions command
354+
$<HTMLElement>('output-permissions').textContent =
355+
`chmod 700 ~/.ssh && chmod 600 ~/.ssh/${filename} && chmod 644 ~/.ssh/${filename}.pub`;
356+
$<HTMLElement>('perm-privkey-name').textContent = `~/.ssh/${filename}`;
357+
$<HTMLElement>('perm-pubkey-name').textContent = `~/.ssh/${filename}.pub`;
358+
292359
results.hidden = false;
293360
} catch (err) {
294361
const msg = err instanceof Error ? err.message : 'Erro desconhecido';

0 commit comments

Comments
 (0)