<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux Sin Humo (Publicaciones sobre criptografia)</title><link>https://sergiobelkin.com/</link><description></description><atom:link href="https://sergiobelkin.com/categories/criptografia.xml" rel="self" type="application/rss+xml"></atom:link><language>es</language><copyright>Contents © 2026 &lt;a href="mailto:sebelk@gmail.com"&gt;sebelk&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;
</copyright><lastBuildDate>Tue, 21 Apr 2026 00:01:45 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Tutorial: Cifrar $HOME con gocryptfs</title><link>https://sergiobelkin.com/posts/tutorial-cifrar-un-directorio-con-gocryptfs/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;En un artículo anterior: &lt;strong&gt;&lt;a href="https://sergiobelkin.com/posts/tutorial-de-fscrypt-para-cifrar-archivos/"&gt;Tutorial de fscrypt para cifrar archivos&lt;/a&gt;&lt;/strong&gt;, habíamos visto como cifrar archivos con &lt;strong&gt;fscrypt&lt;/strong&gt; y ext4. Ahora aprenderemos otro método independiente del sistema de archivos utilizado, se trata de una herramienta llamada &lt;strong&gt;gocryptfs&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Conocimientos previos necesarios:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uso habitual de línea de comandos en Linux (incluyendo entre otros manejo de propietarios y permisos)&lt;/li&gt;
&lt;li&gt;Instalación y desinstalación de paquetes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En el ejemplo en cuestión estoy usando Debian Buster (te recomiendo primero instalarla en una máquina virtual para hacer pruebas), de modo que los pasos a seguir pueden ser un poco diferentes en otras distribuciones, pero los principios generales se mantienen.
&lt;strong&gt;Todos los pasos hasta que lo pruebes como usuario común deben hacerse con privilegios de superusuario.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Es muy importante contar espacio suficiente para copiar temporalmente los archivos del directorio que se desea cifrar.&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;He cambiado el shell del usuario sergio que es &lt;em&gt;dash&lt;/em&gt; (predeterminado en Debian) por &lt;strong&gt;bash&lt;/strong&gt;, ya que el primero no está pensado para un uso interactivo habitual además de ser menos potente.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/rob-king-Au6eR7Yg9CY-unsplash.jpg"&gt;&lt;img src="https://sergiobelkin.com/images/rob-king-Au6eR7Yg9CY-unsplash.thumbnail.jpg" alt=""&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h3 id="instalar-grocryptfs"&gt;Instalar grocryptfs&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;apt install grocryptfs&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="crear-el-directorio-para-cifrar"&gt;Crear el directorio para cifrar&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;mkdir /home/sergio_cifrado&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="inicializar-el-directorio"&gt;Inicializar el directorio&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Aquí seteamos la misma contraseña que la del usuario&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;gocryptfs --init /home/sergio_cifrado/
Choose a password for protecting your files.
Password: 
Repeat: 

Your master key is:

    9c43faf4-16a07508-42213628-50a5c55e-
    e0c17483-c41453a0-6355f9f0-897b3aa9

If the gocryptfs.conf file becomes corrupted or you ever forget your password,
there is only one hope for recovery: The master key. Print it to a piece of
paper and store it in a drawer. This message is only printed once.

The gocryptfs filesystem has been created successfully.
You can now mount it using: gocryptfs /home/sergio_cifrado MOUNTPOINT
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="montar-el-directorio"&gt;Montar el directorio&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;mkdir /home/sergio_montaje_temporario &amp;amp;&amp;amp; chmod 750 /home/sergio_montaje_temporario &amp;amp;&amp;amp; chown sergio. /home/sergio_temporario &amp;amp;&amp;amp;
gocryptfs /home/sergio_cifrado/ /home/sergio_temporario/
Password: 
Decrypting master key
Filesystem mounted and ready.
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="ajustamos-los-propietarios-y-permisos"&gt;Ajustamos los propietarios y permisos&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;chown -R sergio. /home/sergio{_cifrado} &amp;amp;&amp;amp; chmod 750 /home/sergio_cifrado&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="copiar-todos-los-archivos-del-directorio-del-usuario-al-directorio-temporal"&gt;Copiar todos los archivos del directorio del usuario al directorio temporal&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;cp -Tav /home/sergio /home/sergio_temporario&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="borrar-el-contenido-del-directorio-del-usuario-por-favor-realizar-previamente-un-backup"&gt;Borrar el contenido del directorio del usuario (por favor realizar previamente un backup)&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;rm -rf /home/sergio&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="desmontar-el-directorio-cifrado"&gt;Desmontar el directorio cifrado&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;fusermount -u /home/sergio_temporario&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="le-cambiamos-el-nombre-al-directorio-temporario-por-el-original"&gt;Le cambiamos el nombre al directorio temporario por el original&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;mv /home/sergio_temporario /home/sergio&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Todo lo que viene a continuación es necesario cuando queremos que el directorio se monte de manera automática en el momento del login.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="instalamos-el-modulo-de-pam-para-montaje-de-volumenes"&gt;Instalamos el módulo de PAM para montaje de volúmenes&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;apt install -y libpam-mount&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="ejecutamos-el-configurador-de-pam"&gt;Ejecutamos el configurador de pam&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;pam-auth-update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/pam_auth_update.png"&gt;&lt;img src="https://sergiobelkin.com/images/pam_auth_update.thumbnail.png" alt="pam-auth-update"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;y presionamos en &lt;strong&gt;Aceptar&lt;/strong&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;En otras distribuciones y configuraciones, puede ser necesario editar otros archivos del directorio /etc/pam.d.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Luego hay que editar el archivo &lt;code&gt;/etc/security/pam_mount.conf.xml&lt;/code&gt; agregando lo siguiente antes de &lt;code&gt;&amp;lt;/pam_mount&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;volume&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"sergio"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fstype&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"fuse"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"nodev,nosuid,quiet,nonempty,allow_other"&lt;/span&gt;
&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/usr/bin/gocryptfs#/home/%(USER)_cifrado"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;mountpoint&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"/home/%(USER)"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;h3 id="configuramos-fuse"&gt;Configuramos FUSE&lt;/h3&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="gh"&gt;#&lt;/span&gt; /etc/fuse.conf - Configuration file for Filesystem in Userspace (FUSE)

&lt;span class="gh"&gt;#&lt;/span&gt; Set the maximum number of FUSE mounts allowed to non-root users.
&lt;span class="gh"&gt;#&lt;/span&gt; The default is 1000.
&lt;span class="gh"&gt;#&lt;/span&gt;mount_max = 1000

&lt;span class="gh"&gt;#&lt;/span&gt; Allow non-root users to specify the allow_other or allow_root mount options.
&lt;span class="gh"&gt;#&lt;/span&gt; Modificamos aquí:
user_allow_other
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Eso es todo, felicitaciones si llegaste hasta aquí 😀,  podemos reiniciar y probar la configuración:&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/aFezsKg2iRY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;p&gt;Para login gráfico:&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/wwwVL8k_bes" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;

&lt;h3 id="conclusion"&gt;Conclusión&lt;/h3&gt;
&lt;p&gt;De esta manera pudiste configurar el cifrado automática de un directorio $HOME de un usuario. Este método es principalmente útil para equipos donde trabaja un solo usuario (podría ser tu laptop de trabajo diario por ejemplo).&lt;/p&gt;
&lt;h3 id="fuentes-y-mas-recursos"&gt;Fuentes y más recursos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nuetzlich.net/gocryptfs/"&gt;gocryptfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rfjakob/gocryptfs"&gt;rfjakob/gocryptfs: Encrypted overlay filesystem written in Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pam-mount.sourceforge.net/"&gt;pam_mount — Pluggable Authentication Module to mount volumes for a user session&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>criptografia</category><guid>https://sergiobelkin.com/posts/tutorial-cifrar-un-directorio-con-gocryptfs/</guid><pubDate>Wed, 12 May 2021 18:11:58 GMT</pubDate></item><item><title>Tutorial de fscrypt para cifrar archivos</title><link>https://sergiobelkin.com/posts/tutorial-de-fscrypt-para-cifrar-archivos/</link><dc:creator>sebelk</dc:creator><description>&lt;h4 id="conocimientos-previos-necesarios"&gt;Conocimientos previos necesarios:&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;Instalación de Linux.&lt;/li&gt;
&lt;li&gt;Uso habitual de línea de comandos en Linux (incluyendo entre otros manejo de propietarios y permisos).&lt;/li&gt;
&lt;li&gt;Instalación y desinstalación de paquetes.&lt;/li&gt;
&lt;li&gt;Montaje de sistemas de archivos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/alex-motoc-Y83nsKGkxSw-unsplash.jpg"&gt;&lt;img src="https://sergiobelkin.com/images/alex-motoc-Y83nsKGkxSw-unsplash.thumbnail.jpg" alt="Cifrado de archivos"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;El sistema ext4 proporciona cifrado de bloques de datos y nombres de archivos. Veremos a continuación de algunas reglas generales para cifrar el directorio /home de un usuario.&lt;/p&gt;
&lt;p&gt;En el ejemplo en cuestión estoy usando Debian Buster (te recomiendo primero instalarla en una máquina virtual para hacer pruebas), de modo que los pasos a seguir pueden ser un poco diferentes en otras distribuciones, pero los principios generales se mantienen.&lt;/p&gt;
&lt;p&gt;¡Manos a la obra!&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Los comandos precedidos por &lt;code&gt;sudo&lt;/code&gt; indican que necesitan privilegios de root. Si querés usar sudo, sencillamente ejecutá como root:&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;usermod -aG sudo sergio&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Obviamente aquí y en cada caso reemplazalo con tu usuario común.&lt;/p&gt;
&lt;h3 id="preparacion-del-sistema-de-archivos"&gt;Preparación del sistema de archivos&lt;/h3&gt;
&lt;p&gt;Algo que tendremos que hacer es habilitar la funcionalidad de cifrado, suponiendo que la partición de cifrado es /dev/sda1, haríamos:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo tune2fs -O encrypt /dev/sda1&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="descarga-y-compilacion"&gt;Descarga y compilación&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt build-dep fscrypt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;do apt -y install git &amp;amp;&amp;amp; go get -d github.com/google/fscrypt/...&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cd go/src/github.com/google/fscrypt/&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make &amp;amp;&amp;amp; sudo make install PREFIX=/usr&lt;/code&gt;&lt;/p&gt;
&lt;h3 id="configuracion"&gt;Configuración&lt;/h3&gt;
&lt;p&gt;Tenemos que actualizar la configuración de PAM, que servirán para desbloquear directorios al loguearse, bloquear al desloguearse, y cambiar contraseñas de acceso a los recursos cifrados.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo pam-auth-update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/pam-auth-update-fscrypt.png"&gt;&lt;img src="https://sergiobelkin.com/images/pam-auth-update-fscrypt.thumbnail.png" alt="pam-auth-update"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Para configurar globalmente:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo fscrypt setup&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;No se puede cifrar un directorio que ya tiene contenido, de manera que hay que crear un nuevo directorio, y luego migrar el contenido del directorio del usuario:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo mkdir /home/sergio_temp &amp;amp;&amp;amp; sudo chown sergio.sergio /home/sergio_temp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fscrypt encrypt /home/sergio_temp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Allí podríamos elegir entre la contraseña del usuario, una passphrase o bien un archivo con clave 256-bit. En nuestro elegimos la primera opción, siempre teniendo en cuenta lo importante que es contar con una buena contraseña.&lt;/p&gt;
&lt;p&gt;Luego chequeamos que esté todo en orden:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fscrypt status /home/sergio_temp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ahora sí, migramos el contenido:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cp -av -T /home/sergio /home/sergio_temp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Bloqueamos el contenido del directorio&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo fscrypt lock /home/sergio_temp --user=/home/sergio_temp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Probamos desbloquear&lt;/p&gt;
&lt;p&gt;&lt;code&gt;fscrypt unlock /home/sergio_temp&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si funciona podemos reemplazarlo por el nuevo directorio:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo su -&lt;/code&gt;
&lt;code&gt;mv /home/sergio{,_para-borrar}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;mv /home/sergio{_temp,}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Luego al reiniciar podemos probar:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;reboot&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;¿Cómo se ven los archivos cifrados?&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/fscrypt-access.png"&gt;&lt;img src="https://sergiobelkin.com/images/fscrypt-access.thumbnail.png" alt=""&gt;&lt;/a&gt; &lt;/p&gt;
&lt;h4 id="mas-recursos"&gt;Más Recursos&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/google/fscrypt"&gt;fscrypt: Go tool for managing Linux filesystem encryption&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://wiki.archlinux.org/index.php/Fscrypt"&gt;fscrypt - ArchWiki&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kernel.org/doc/html/v4.18/filesystems/fscrypt.html"&gt;Filesystem-level encryption (fscrypt) — The Linux Kernel documentation&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;</description><category>criptografia</category><category>seguridad</category><guid>https://sergiobelkin.com/posts/tutorial-de-fscrypt-para-cifrar-archivos/</guid><pubDate>Sat, 24 Apr 2021 13:30:29 GMT</pubDate></item><item><title>curl con resolución de nombres selectivo</title><link>https://sergiobelkin.com/posts/curl-con-resolucion-de-nombres-selectivo/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;A veces necesitamos testear un webserver en una ip alternativa a la que resuelve el DNS, para conseguirlo:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;curl --resolve www.example:443:10.0.3.102  -I https://www.example&lt;/code&gt;&lt;/p&gt;</description><category>criptografia</category><guid>https://sergiobelkin.com/posts/curl-con-resolucion-de-nombres-selectivo/</guid><pubDate>Mon, 27 Apr 2020 18:59:11 GMT</pubDate></item><item><title>Como autenticar en ssh con certificado</title><link>https://sergiobelkin.com/posts/como-usar-certificados-ssh-para-autenticar/</link><dc:creator>sebelk</dc:creator><description>&lt;ol&gt;
&lt;li&gt;En un servidor crear un par de claves para firmar claves de usuario.
&lt;br&gt;&lt;code&gt;cd /etc/ssh &amp;amp;&amp;amp; ssh-keygen -f user_ca&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Agregar en el archivo &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;:
&lt;br&gt;&lt;code&gt;TrustedUserCaKeys /etc/ssh/user_ca.pub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reiniciar el servicio
&lt;br&gt;&lt;code&gt;systemctl restart sshd&lt;/code&gt;
&lt;br&gt; &lt;em&gt;Para lograr que los certificados que vamos a generar se puedan usar en otros servidores, habría que copiar en ellos la clave pública (&lt;code&gt;user_ca.pub&lt;/code&gt;), agregar la misma línea y reiniciar el servicio ssh.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Copiar la clave pública del cliente ssh al servidor.
&lt;br&gt;&lt;code&gt;scp ~/.ssh/id_rsa_sergio.pub root@certserver:/etc/ssh/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Generar un certificado a partir de la clave pública.
&lt;br&gt;&lt;code&gt;ssh-keygen -s user_ca -I user_sergio -n sergio,root -V +52w id_rsa_sergio.pub&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Copiar el certificado al host del usuario.
&lt;br&gt;&lt;code&gt;scp root@certserver:/etc/ssh/id_rsa_sergio-cert.pub ~/.ssh/&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;Autenticarse con el certificado del usuario.
&lt;br&gt;&lt;code&gt;ssh -i ~/id_rsa_sergio-cert.pub root@certserver&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/auth-ssh-cert.png"&gt;&lt;img src="https://sergiobelkin.com/images/auth-ssh-cert.thumbnail.png" alt="Autenticación a ssh con certificado"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Enlaces útiles&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sergiobelkin.com/posts/tutorial-autenticacion-con-clave-publica/"&gt;Tutorial: Autenticación en SSH con clave pública | Mixturas Resilientes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.habets.se/2011/07/OpenSSH-certificates.html"&gt;OpenSSH certificates&lt;/a&gt; (Mención de honor para este host que es en el cual me basé para la presente guía)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.fedoraproject.org/en-US/Fedora/23/html/System_Administrators_Guide/sec-Using_OpenSSH_Certificate_Authentication.html"&gt;8.3. Using OpenSSH Certificate Authentication&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description><category>criptografia</category><category>ssh</category><guid>https://sergiobelkin.com/posts/como-usar-certificados-ssh-para-autenticar/</guid><pubDate>Sat, 16 Nov 2019 08:39:00 GMT</pubDate></item><item><title>Tutorial: Autenticación en SSH con clave pública</title><link>https://sergiobelkin.com/posts/tutorial-autenticacion-con-clave-publica/</link><dc:creator>sebelk</dc:creator><description>&lt;p&gt;Este es un tutorial para que empecemos a usar claves públicas para autenticarnos. El único requisito es que hayamos ingresado a un servidor o host remoto con ssh. En nuestro ejemplo ese host tiene la ip 10.0.3.11.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/jametlene-reskp-9DdOrQpMsUs-unsplash.jpg"&gt;&lt;img src="https://sergiobelkin.com/images/jametlene-reskp-9DdOrQpMsUs-unsplash.thumbnail.jpg" alt=""&gt;&lt;/a&gt;i
&lt;br&gt;
&lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="https://sergiobelkin.com/posts/tutorial-autenticacion-con-clave-publica/#fn:1"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;El uso de autenticación por clave pública, tal como vimos en el &lt;a href="https://sergiobelkin.com/posts/guia-breve-ssh-con-clave-publica/"&gt;post anterior&lt;/a&gt; tiene la ventaja de no tener que ingresar usuario y contraseña. Esto puede ser útil en casos en que necesitemos realizar alguna tarea en un host remoto de manera no interactiva. Por ejemplo podríamos crear una tarea programada que ejecute todos los días un script de backup.
Veremos paso a paso como conseguirlo.
Lo primero que tendremos que hacer es generar un par de claves. Para ellos ejecutaremos el siguiente comando:
&lt;code&gt;ssh-keygen&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Como se ve en la imagen de abajo se nos preguntará la ruta de la clave privada, aceptamos la predeterminada presionando la tecla Enter.
&lt;a class="image-reference" href="https://sergiobelkin.com/images/ssh-keygen.png"&gt;&lt;img src="https://sergiobelkin.com/images/ssh-keygen.thumbnail.png" alt=""&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;y además se nos pedirá una passphrase. La passphrase es una frase que sea fácil de recordar para uno mismo, pero a la vez difícil de adivinar para otros. El propósito es cifrar la clave privada. Si te estás preguntando ¿para qué hacer todo esto si de todas maneras tendré que ingresa una passphrase para autenticarme. La respuesta es que tenemos técnicas como veremos un poco más abajo, para evitar la necesidad del ingreso de la frase una y otra vez.
Ingresamos la frase una vez después de la otra:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/ssh-keygen-2.png"&gt;&lt;img src="https://sergiobelkin.com/images/ssh-keygen-2.thumbnail.png" alt=""&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Esto generará dos archivos en el directorio &lt;code&gt;~/.ssh&lt;/code&gt;: &lt;code&gt;id_rsa&lt;/code&gt; y &lt;code&gt;id_rsa.pub&lt;/code&gt; que son la clave privada y la clave pública respectivamente. Como sus nombres lo indican la clave privada no debe compartirse, en cambio la clave pública es la que nosirve para identificarnos como usuarios frente a otros hosts y se puede compartir.&lt;/p&gt;
&lt;p&gt;En este momento tenemos que copiar la clave pública al host que funciona como servidor ssh. La manera más fácil y ráṕida de hacerlo es con el comando siguiente:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/ssh-copy-id.png"&gt;&lt;img src="https://sergiobelkin.com/images/ssh-copy-id.thumbnail.png" alt="ssh-copy-id"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Ingresamos la contraseña de root y luego presionamos la tecla Enter. Lo que hace este comando es agregar la clave pública del archivo &lt;code&gt;id_rsa.pub&lt;/code&gt; al archivo /root/.ssh/authorized_keys del servidor ssh.&lt;/p&gt;
&lt;p&gt;Ahora lo que hacemos es reemplazar la shell actual con el agente de ssh y re-ejecutando la shell bash. El agente de ssh será el encargado de guardar las claves privadas en memoria para que no tengamos que ingresar más de una vez la passphrase:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/ssh-agent.png"&gt;&lt;img src="https://sergiobelkin.com/images/ssh-agent.thumbnail.png" alt="ssh-agent"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Luego ejecutamos el comando &lt;code&gt;ssh-add&lt;/code&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/ssh-add.png"&gt;&lt;img src="https://sergiobelkin.com/images/ssh-add.thumbnail.png" alt="ssh-add"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Se nos pedirá la frase, la ingresamos y le damos Enter.&lt;/p&gt;
&lt;p&gt;&lt;a class="image-reference" href="https://sergiobelkin.com/images/ssh-passwordless.png"&gt;&lt;img src="https://sergiobelkin.com/images/ssh-passwordless.thumbnail.png" alt="ssh sin contraseña"&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;A través de este tutorial mencionamos varios conceptos que podés ampliar recurriendo a los siguientes enlaces:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.unixwiz.net/techtips/ssh-agent-forwarding.html"&gt;An Illustrated Guide to SSH Agent Forwarding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blakesmith.me/2010/02/08/understanding-public-key-private-key-concepts.html"&gt;understanding public key private key concepts » Blake Smith&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.learningtree.com/ways-manage-ssh-keys-identities/"&gt;Ways to Manage Your SSH Keys and Identities | Learning Tree Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="footnote"&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id="fn:1"&gt;
&lt;p&gt;Photo by Jametlene Reskp on Unsplash &lt;a class="footnote-backref" href="https://sergiobelkin.com/posts/tutorial-autenticacion-con-clave-publica/#fnref:1" title="Jump back to footnote 1 in the text"&gt;↩&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description><category>criptografia</category><category>ssh</category><guid>https://sergiobelkin.com/posts/tutorial-autenticacion-con-clave-publica/</guid><pubDate>Fri, 08 Nov 2019 12:12:36 GMT</pubDate></item></channel></rss>