@@ -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