{"id":145,"date":"2017-04-05T21:00:03","date_gmt":"2017-04-06T00:00:03","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/2017\/04\/ssh-sem-senha\/"},"modified":"2026-09-08T02:31:58","modified_gmt":"2026-09-08T05:31:58","slug":"ssh-sem-senha","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2017\/04\/ssh-sem-senha\/","title":{"rendered":"Usando claves de autenticaci\u00f3n en SSH"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"Mascote do LinuxPro enfiando a chave na fechadura do servidor, com o t\u00fanel SSH cifrado levando as chaves do notebook at\u00e9 o rack\" src=\"\/wp-content\/uploads\/2026\/09\/ssh-chaves-v4.webp\" width=\"1052\" height=\"652\" \/><\/p>\n<div style=\"background:#fff8e1;border-left:4px solid #8b1a1a;padding:.8em 1em;margin:1em 0\"><strong>Nota (2026):<\/strong> El howto de 2017 generaba RSA (<code data-no-translation=\"\">ssh-keygen -t rsa<\/code>) y desactivaba la contrase\u00f1a con <code data-no-translation=\"\">UsePAM no<\/code> + <code data-no-translation=\"\">\/etc\/init.d\/ssh restart<\/code>. Hoy el default es <strong>Ed25519<\/strong>; PAM sigue activado; el drop-in va en <code data-no-translation=\"\">sshd_config.d<\/code>; solo se corta la contrase\u00f1a despu\u00e9s de probar la clave en una segunda sesi\u00f3n.<\/div>\n<p>La contrase\u00f1a en SSH sigue cayendo ante fuerza bruta. El par de claves \u2014p\u00fablica en el servidor, privada en tu m\u00e1quina, protegida por passphrase\u2014 es el inicio de sesi\u00f3n de 2026. El OpenSSH de Ubuntu 24.04\/26.04 ya genera Ed25519 si llamas a <code data-no-translation=\"\">ssh-keygen<\/code> sin flags (desde el 9.5). El resto son permisos, <code data-no-translation=\"\">ssh-copy-id<\/code> y no quedarse fuera.<\/p>\n<p><!-- more --><\/p>\n<h2>Genera la clave en el cliente<\/h2>\n<p>Como su usuario, nunca como root:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh-keygen -t ed25519 -a 64 -C \"$(whoami)@$(hostname)-2026\"\n<\/code><\/pre>\n<p>Acepte <code data-no-translation=\"\">~\/.ssh\/id_ed25519<\/code>. Ponga una passphrase de verdad \u2014 la clave privada sin frase es un inicio de sesi\u00f3n en un archivo. <code data-no-translation=\"\">-a 64<\/code> aumenta las rondas KDF. Servidor antiguo que no habla Ed25519 (raro): <code data-no-translation=\"\">ssh-keygen -t rsa -b 4096<\/code>. DSA est\u00e1 muerto en OpenSSH 7+.<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">chmod 700 ~\/.ssh\nchmod 600 ~\/.ssh\/id_ed25519\nchmod 644 ~\/.ssh\/id_ed25519.pub\n<\/code><\/pre>\n<h2>Instala la p\u00fablica en el servidor<\/h2>\n<p><code data-no-translation=\"\">ssh-copy-id<\/code> crea <code data-no-translation=\"\">~\/.ssh<\/code>, ajusta los permisos y a\u00f1ade la l\u00ednea en <code data-no-translation=\"\">authorized_keys<\/code>:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh-copy-id -i ~\/.ssh\/id_ed25519.pub usuario@servidor\n# porta n\u00e3o padr\u00e3o:\nssh-copy-id -i ~\/.ssh\/id_ed25519.pub -p 2222 usuario@servidor\n<\/code><\/pre>\n<p>Sin <code data-no-translation=\"\">ssh-copy-id<\/code>:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh usuario@servidor 'mkdir -p ~\/.ssh &amp;&amp; chmod 700 ~\/.ssh'\ncat ~\/.ssh\/id_ed25519.pub | ssh usuario@servidor 'cat &gt;&gt; ~\/.ssh\/authorized_keys &amp;&amp; chmod 600 ~\/.ssh\/authorized_keys'\n<\/code><\/pre>\n<p>Prueba <strong>antes<\/strong> de tocar el <code data-no-translation=\"\">sshd<\/code>:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh -i ~\/.ssh\/id_ed25519 -o IdentitiesOnly=yes usuario@servidor\n<\/code><\/pre>\n<p>Tiene que entrar sin la contrase\u00f1a de la cuenta (la passphrase de la clave, si la tiene, el agente la pregunta). Deje esa sesi\u00f3n abierta. Abra otra terminal para el endurecimiento.<\/p>\n<h2>Desactive contrase\u00f1a \u2014 sin UsePAM no<\/h2>\n<p>En Ubuntu, <code data-no-translation=\"\">UsePAM no<\/code> (el consejo de 2017) rompe otras rutas de PAM. Mantenga PAM. Use drop-in, no edite el <code data-no-translation=\"\">sshd_config<\/code> entero:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo tee \/etc\/ssh\/sshd_config.d\/99-keys-only.conf &lt;&lt;'EOF'\nPasswordAuthentication no\nKbdInteractiveAuthentication no\nPubkeyAuthentication yes\nPermitRootLogin prohibit-password\nEOF\nsudo sshd -t &amp;&amp; sudo systemctl reload ssh\n<\/code><\/pre>\n<p>En RHEL\/Rocky el servicio es <code data-no-translation=\"\">sshd<\/code>: <code data-no-translation=\"\">sudo systemctl reload sshd<\/code>. Confirme en la sesi\u00f3n que qued\u00f3 abierta, y en una <em>nueva<\/em>:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">ssh usuario@servidor\n<\/code><\/pre>\n<p>Si la nueva falla, la sesi\u00f3n anterior a\u00fan salva. No cierre la consola hasta que la clave funcione dos veces.<\/p>\n<h2>Agente, config, clave f\u00edsica<\/h2>\n<p><code data-no-translation=\"\">ssh-agent<\/code> (o gnome-keyring) guarda la privada desbloqueada en la sesi\u00f3n gr\u00e1fica:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">eval \"$(ssh-agent -s)\"\nssh-add ~\/.ssh\/id_ed25519\n<\/code><\/pre>\n<p>Un <code data-no-translation=\"\">~\/.ssh\/config<\/code> evita flag:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">Host lab\n  HostName 192.0.2.10\n  User nilton\n  IdentityFile ~\/.ssh\/id_ed25519\n  IdentitiesOnly yes\n<\/code><\/pre>\n<p>YubiKey \/ FIDO2: <code data-no-translation=\"\">ssh-keygen -t ed25519-sk<\/code> (OpenSSH 8.2+). La privada no sale del token. <code data-no-translation=\"\">ssh-copy-id -i ~\/.ssh\/id_ed25519_sk.pub usuario@servidor<\/code>.<\/p>\n<h2>Cierre<\/h2>\n<p>Ed25519, <code data-no-translation=\"\">ssh-copy-id<\/code>, probar, solo entonces quitar la contrase\u00f1a. El diagrama de 2017 (cliente, sesi\u00f3n, claves) sigue siendo v\u00e1lido; el algoritmo y el <code data-no-translation=\"\">init.d<\/code> no. P\u00e1gina de manual: <code data-no-translation=\"\">man ssh-keygen<\/code>, <code data-no-translation=\"\">man sshd_config<\/code>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Senha no SSH ainda cai em brute-force. O par de chaves \u2014 p\u00fablica no servidor, privada na sua m\u00e1quina, protegida por passphrase \u2014 \u00e9 o login de 2026. O OpenSSH do Ubuntu 24.04\/26.04 j\u00e1 gera Ed25519 se voc\u00ea chamar ssh-keygen &#8230; <a title=\"Usando claves de autenticaci\u00f3n en SSH\" class=\"read-more\" href=\"https:\/\/www.linuxpro.com.br\/es\/2017\/04\/ssh-sem-senha\/\" aria-label=\"Leer m\u00e1s sobre Usando chaves de autentica\u00e7\u00e3o no SSH\">Leer m\u00e1s<\/a><\/p>","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[14,4],"class_list":["post-145","post","type-post","status-publish","format-standard","hentry","category-linux","tag-howto","tag-linux"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=145"}],"version-history":[{"count":4,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/145\/revisions"}],"predecessor-version":[{"id":1077,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/145\/revisions\/1077"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}