<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ SSH - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Descubre miles de cursos de programación escritos por expertos. Aprende Desarrollo Web, Ciencia de Datos, DevOps, Seguridad y obtén asesoramiento profesional para desarrolladores. ]]>
        </description>
        <link>https://www.freecodecamp.org/espanol/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ SSH - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/espanol/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 22 May 2026 20:03:02 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/espanol/news/tag/ssh/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Cómo funciona internamente la autenticación SSH con GitHub ]]>
                </title>
                <description>
                    <![CDATA[ El SSH (Shell Seguro) es un protocolo cliente-servidor para conectarse y autenticarse a un servidor remoto. La autenticación significa que el servidor remoto puede verificar que eres tú mismo no alguien más hablando por ti. Podrías ya estar usando la autenticación SSH de Github, ¿pero sabes cómo funciona en sí? ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/como-funciona-internamente-la-autenticacion-ssh-con-github/</link>
                <guid isPermaLink="false">67c4da6aa3e1830472d3e6b6</guid>
                
                    <category>
                        <![CDATA[ SSH ]]>
                    </category>
                
                    <category>
                        <![CDATA[ GitHub ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Git ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Elias Ezequiel Pereyra Gomez ]]>
                </dc:creator>
                <pubDate>Tue, 15 Apr 2025 14:30:46 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2025/03/aba38efa-117c-4ef7-a844-91599c0a4d62.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artículo original:</strong> <a href="https://www.freecodecamp.org/news/ssh-authentication-with-github-under-the-hood/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">https://www.freecodecamp.org/news/ssh-authentication-with-github-under-the-hood/</a>
      </p><p>El SSH (Shell Seguro) es un protocolo cliente-servidor para conectarse y autenticarse a un servidor remoto.</p><p>La autenticación significa que el servidor remoto puede verificar que eres tú mismo no alguien más hablando por ti.</p><p>Podrías ya estar usando la autenticación SSH de Github, ¿pero sabes cómo funciona en sí? En este artículo, aprenderá qué sucede de forma interna y cómo funciona en realidad la autenticación de SSH.</p><p>A lo largo, entenderás los conceptos fundamentales de criptografía que cada desarrollador debería saber: encriptación de clave simétrica, encriptación de clave asimétrica, funciones hash criptográficas, y firmas digitales.</p><p>Algunos desarrolladores usualmente no tienen la chance de aprender y entender estos fundamentos de criptografía, pero estos conceptos te ayudarán a la larga. También, te ayudarán en estar en una mejor posición para tomar decisiones de seguridad informadas para tus aplicaciones de web en producción.</p><p>Así que vamos, abróchate los cinturones de seguridad, ¡y comencemos!</p><h3 id="esto-es-lo-que-cubriremos-"><strong>Esto es lo que cubriremos:</strong></h3><ol><li><a href="#primero-por-que-autenticacion-importante">Primero, ¿por qué la Autenticación es tan importante?</a></li><li><a href="#encriptacion-clave-simetrica">Encriptación de Clave Simétrica</a> </li><li><a href="#encriptacion-llave-asimetrica">Encriptación de Clave Asimétrica</a></li><li><a href="#funciones-hash-criptograficas">Funciones de Hash Criptográficas</a> </li><li><a href="#firmas-digitales">Firmas Digitales</a></li><li><a href="#como-funciona-la-autenticacion-ssh">Cómo Funciona la Autenticación SSH</a> </li><li><a href="#resumiendo-todo">Resumiendo Todo</a></li></ol><!--kg-card-begin: html--><h2 id="primero-por-que-autenticacion-importante">Primero, ¿por qué la Autenticación es tan importante?</h2><!--kg-card-end: html--><p>Cuando ejecutamos <code>git push</code>, Github necesita verificar que la persona correcta está interactuando con Github. Imagina si un atacante podría llegar a hacer <code>git push</code> por ti.</p><p>Entonces todos tus repositorios estarían bajo el control del atacante. Podrían eliminar todo tu código juntamente con todo el historial de las confirmaciones.</p><p>Esto suena bastante peligroso, ¿no? Así que para verificar que eres tú el que está hablando con Github, y no un atacante, Github tiene varias formas de autenticarte.</p><p>El método más usado para autenticar con Github es la autenticación SSH.</p><p>Antes que entendamos cómo funciona la autenticación SSH internamente, necesitaremos entender los conceptos fundamentales de criptografía, a saber – encriptación de clave simétrica, encriptación de clave asimétrica, funciones de hash criptográficas, y firmas digitales.</p><p>¡Comencemos!</p><!--kg-card-begin: html--><h2 id="encriptacion-clave-simetrica">Encriptación de Clave Simétrica</h2><!--kg-card-end: html--><p>En los tiempos antiguos, los gobernantes idearon varios métodos de comunicar mensajes militares secretos a sus comandantes del ejército.</p><p>En los métodos más primitivos, mayormente usados por los gobernantes Griegos antiguos y posiblemente luego los Romanos, involucrados usando una vara de madera cilíndrica llamado un <strong><a href="https://es.wikipedia.org/wiki/Esc%C3%ADtala">Escítala</a></strong>.</p><p>Antes de una invasión militar, el gobernante tendría las dos mismas varas de madera cilíndricos exactas. Entonces le daría una escítala al comandante del ejército y mantener uno para sí mismo.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1734514827027/b4945c3a-64d4-458b-a410-f23b1a08d9ef.png" class="kg-image" alt="A scytale with leather strip wounded and a message written on it." width="2012" height="1176" loading="lazy"></figure><p>El dispositivo funcionaba al enrollar una tira de cuero alrededor de escítala. Después de hacer esto, el gobernante escribiría el mensaje por encima de la tira de cuero enrollada de forma que solo pudiera ser leído cuando estuviere enrollada de forma apropiada nuevamente. </p><p>Supón que la escítala le permitiera escribir tres letras alrededor en un circulo y cinco letras de forma recta a lo largo de su longitud. La tira de cuero enrollada con el mensaje <code>attackfromright</code> escrito luciría así:</p><pre><code class="language-plaintext">       |   |   |   |   |   |
       | a | t | t | a | c |  |
     __| k | f | r | o | m |__|
    |  | r | i | g | h | t |
    |  |   |   |   |   |   |
</code></pre><p>Después de escribir el mensaje en la escítala, el gobernante desenrollaría la tira de cuero y lo enviaría al comandante del ejército. Cuando estaba desenrollada, la tira de cuero tendría el siguiente mensaje desordenado:</p><pre><code class="language-plaintext">----------------
akrtfitrgaohcmt
----------------
</code></pre><p>Así que ahora lo ves, incluso si la tira de cuero fuera interceptada por un espía enemigo, el mensaje no tendría sentido. ¿No es fascinante? El uso inteligente de una vara de madera y una tira de cuero, ¡podría haber ayudado a algunos gobernantes antiguos ganar batallas!</p><p>Cuando la tira de cuero alcanzaba al comandante del ejército, lo envolvería con su propia escítala (que sería exactamente el mismo que el del gobernante), y luego el comandante sería capaz de entender el mensaje apropiadamente.</p><p>Esta técnica de la escítala en realidad es un ejemplo de la encriptación de clave simétrica en la práctica.</p><p>La encriptación es un proceso en el que el mensaje origina es modificado (o codificado) de tal forma que solamente el recipiente indicado puede decodificar y ver el mensaje actual.</p><p>El mensaje original se llama texto plano, mientras que el mensaje codificado se llama texto cifrado. La encriptación convierte el <code>texto plano a texto cifrado</code> con la ayuda de una clave.</p><p>Para descifrar el mensaje, que sería convertir el <code>texto cifrado a texto plano</code>, una persona debe tener acceso a la misma llave.</p><p>Si lo comparamos a la técnica de la escítala, la escítala es la llave. El gobernantes solamente comparte la llave (escítala) con el comandante del ejército que necesita saber lo que dice el mensaje.</p><p>Así es como luce el proceso de encriptación:</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1734519516607/75c926a3-faec-402a-8bcd-122039f47a01.png" class="kg-image" alt="Encryption with scytale as key." width="2023" height="526" loading="lazy"></figure><p>El proceso de descifrado lucirá así:</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1734519525487/de096889-332c-4482-b2df-b28ce609a8a6.png" class="kg-image" alt="Decryption with scytale as key." width="1979" height="526" loading="lazy"></figure><p>Llamamos a esto encriptación de llave simétrica porque la misma llave se usa tanto para encriptar y descifrar el mensaje.</p><p>Esta llave (la escítala) se debe mantener resguardada del acceso del enemigo. Si el enemigo accede a esta llave, entonces será capaz de descifrar los mensajes.</p><p>Pero hay otro tipo de encriptación llamada encriptación de llave asimétrica. Ahora que entiendes la encriptación de llave simétrica, sigamos con la encriptación de llave asimétrica.</p><!--kg-card-begin: html--><h2 id="encriptacion-llave-asimetrica">Encriptación de Llave Asimétrica</h2><!--kg-card-end: html--><p>En la encriptación de llave simétrica, como vimos arriba, la misma llave era usada por el gobernante y el comandante del ejército para encriptar y descifrar el mensaje.</p><p>Pero en una encriptación de llave asimétrica, hay dos llaves (llamado un par de llaves). De las dos llaves, una es una llave privada y la otra es una llave pública.</p><p>La llave pública puede ser compartido con todos (el cual por eso se llama pública). Pero la llave privada tiene que mantenerse, ¡en secreto! Nunca debe ser revelado a nadie.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735200860039/7aca8ffa-c33a-44e5-ab1a-181492ebefd8.png" class="kg-image" alt="Public key can be shared with everyone. But the private key must be kept secret." width="2714" height="1428" loading="lazy"></figure><p>Lo interesante sobre la encriptación de llave asimétrica es eso, si un mensaje es encriptado con la llave pública, entonces puede ser descifrado solamente con la llave privada correspondiente. Ninguna otra llave puede descifrarlo.</p><p>Y funciona de la otra forma también. Si un mensaje es encriptado con la llave privada entonces puede ser descifrado solamente usando la llave pública correspondiente.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735120077350/b90901c8-b55c-428a-8eb4-1b8ffa65fa06.png" class="kg-image" alt="Illustration of public and private key mathematically linked with each other." width="948" height="835" loading="lazy"></figure><p>Las dos llaves – pública y privada – están enlazados matemáticamente uno con el otro. Mientras uno encripta, el otro descifra.</p><p>Sólo una pequeña nota, la encriptación de llave asimétrica también se le llama encriptación de llave pública. Estos dos términos son usados de forma intercambiable pero significa lo mismo.</p><!--kg-card-begin: html--><h2 id="funciones-hash-criptograficas">Funciones Hash Criptográficas</h2><!--kg-card-end: html--><p>Una función hash criptográfica está diseñada para tomar una entrada de cualquier longitud y producir una salida de longitud fijada. La salida de longitud fijada se le denomina valor hash.</p><p>Un ejemplo popular de una función hash criptográfica es SHA-256.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735030835833/201640c6-13b4-4b2b-9be3-88e245269bd1.png" class="kg-image" alt="SHA-256 calculation of &quot;freeCodeCamp.org&quot;" width="2283" height="285" loading="lazy"></figure><p>La imagen de arriba muestra el valor hash SHA-256 de la entrada "freeCodeCamp.org". Las funciones hash criptográficas tienen tres propiedades que lo hacen muy útiles (lo veremos en las próximas secciones).</p><p>Primero, es prácticamente imposible para tomar el valor hash y averiguar la entrada del valor hash.</p><p>Por ejemplo, si nos dan el valor hash <code>c9c31315ef2257e4b7698</code>, no hay forma de que averigüemos que la entrada a la función hash fuere "freeCodeCamp.org".</p><p>Segundo, si pasamos la misma entrada a la función hash, obtenemos el mismo valor hash como la salida.</p><p>Si pasamos "freeCodeCamp.org" nuevamente a la función hash SHA-256, obtendremos la misma salida hash como nuestra llamada previa.</p><p>Tercero, dos entradas distintas nunca comparten el mismo valor hash. Inclusive el cambio más ligero en la entrada produce una salida totalmente distinta.</p><p>Supón que si proveemos "freeCodeCamp" como entrada en vez de "freeCodeCamp.org" – obtenemos una salida totalmente distinta.</p><!--kg-card-begin: html--><h2 id="firmas-digitales">Firmas Digitales</h2><!--kg-card-end: html--><p>En tus vidas diarias, podrías tener que firma varios documentos. Podrían ser documentos legales, o el boletín de calificaciones de tus hijos, o tal vez algo más.</p><p>Cuando tu firma esté presente en el documento, le transmite a la otra parte que eres tú el que está de acuerdo cualquier cosa que esté escrito en ese documento.</p><p>Luego, no puedes dar marcha atrás de lo que está escrito en el documento. ¿Correcto?</p><p>De forma similar, en el mundo digital, tenemos las firmas digitales – o podemos simplemente llamarlos firmas.</p><p>Entendamos cómo funcionan las firmas usando un ejemplo. Tenemos dos usuarios llamados "Alice" y "Bob".</p><p>Bob quiere transferir algo de dinero a la cuenta bancaria de Alice. Así que Bob le pide a Alice su información de cuenta bancaria.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735042150046/034d26c5-b33d-4b82-aeb8-173e47cd8e8e.png" class="kg-image" alt="An illustration showing alice and bob's computers far away from each other and alice's bank account number." width="1972" height="1410" loading="lazy"></figure><p>Alice sabe sobre las firmas digitales y decidió usar una. Al final, entenderás por qué Alice optó por una firma digital.</p><p>Antes de que Alice pueda crear una firma digital. Alice provee a Bib su clave pública (y guarda la clave privada para sí misma).</p><p>Luego Alice crea una firma digital y lo color al final del documento.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735041977880/35313148-8820-42d7-b122-3ddf0cbaa723.png" class="kg-image" alt="Process of digital signature generation." width="1065" height="471" loading="lazy"></figure><p>Una firma digital se crea primero al pasar el contenido del documento a una función hash criptográfica como SHA-256. En el caso de Alice, el contenido del documento es su número de cuenta bancaria.</p><p>Una vez que obtenemos el valor hash, se encripta con la <strong>clave privada</strong> de Alice. La salida de esta encriptación es la firma el cual se coloca al final del documento.</p><p>Luego esto se lo envía a Bob por Internet.</p><p>Cuando Bob recibe este documento, verifica si la <strong>firma es válida o no</strong>.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735043216695/256f7707-3f40-433f-9b00-c11b27ef01e8.png" class="kg-image" alt="Process of signature verification." width="2905" height="1636" loading="lazy"></figure><p>Para verificar la firma, Bob primero descifra la firma con la clave pública de Alice. Si lo recuerdas, Alice generó la firma al encriptar el valor hash.</p><pre><code class="language-plaintext"> plaintext                         ciphertext  
     |                                 |
     |                                 |
     |                                 |
hash value --------encrypt--------&gt; signature
</code></pre><p>Así que, cuando Bob descifra la firma, obtendrá el valor hash que Alice calculó. Llamemos a este valor hash de Alice.</p><pre><code class="language-plaintext"> ciphertext                         plaintext  
     |                                 |
     |                                 |
     |                                 |
signature --------decrypt--------&gt; hash value
</code></pre><p>Luego Bob toma el número de la cuenta bancaria que esta presente en el documento y lo pasa a la función hash.</p><p>Finalmente, Bob coincide el valor hash de Alice (la firma descifrada) y el valor hash que calculó. Si ambos valores hash coinciden entonces significa que la firma es válida.</p><p>Muy bien – ¿pero por qué necesitábamos hacer todo esto? ¿Qué significa si la firma es válida?</p><p>Cuando la verificación de la firma es exitosa, prueba dos cosas.</p><p>Primero, prueba que el documento ha sido enviado por Alice solamente. Nadie más podría haber enviado este documento.</p><p>La garantía de que solamente Alice ha enviado este documento viene del hecho de que fuimos capaces de descifrar la firma usando la clave pública de Alice.</p><p>Hemos aprendido de que si algo es encriptado usando una clave privada entonces puede ser descifrado solamente usando su clave pública vinculada.</p><p>Asi que, si Bob fue capaz de descifrar la firma usando la clave pública de Alice, significa que fue descifrado utilizando la clave privada de Alice, ¿correcto?</p><p>Y solamente Alice tiene acceso a su clave privada. Esto significa que, ¡Alice es la única persona quien podría haber enviado este documento!</p><p>Segundo, prueba que el contenido del mensaje no ha sido modificado por un atacante durante la transmisión en red.</p><p>Hicimos dos cosas para verificar la firma. Desciframos la firma, y nos dio el valor hash que Alice calculó. Y también hasheamos el número de cuenta bancaria recibido.</p><p>Si el valor hash que Alice caluló y el valor hash que Bob calculó son los mismos, significa que Alice y Bob dieron exactamente la misma entrada a la función hash.</p><p>Y esto significa que el número de cuenta bancaria que Alice envió y que Bob recibió son exactamente los mismos.</p><p>Si un atacante habría cambiado el número de cuenta bancaria antes de que el documento le llegara a Bob, entonces Bob hubiera recibido un número de cuenta bancaria modificado.</p><p>Cuando Bob fuera a calcular el valor hash de este número de cuenta bancaria modificado, el valor hash hubiera sido distinto de lo que Alice había calculado.</p><p>Así que mientras coincida el valor hash de Alice (firma descifrada) y el valor hash que Bob calculó, la coincidencia fallaría. Y evitaría que Bob transfiera dinero al número de cuenta bancaria errónea.</p><p>Para concluir, cuando la firma es verificada con éxito, significa que:</p><ol><li>El documento es solamente de Alice.</li><li>El contenido del documento no fue modificado por algún tercero.</li></ol><p>Ahora has aprendido sobre encriptación de clave simétrica, encriptación de clave asimétrica, funciones de hash criptográficas, y firmas digitales. ¡Es genial!</p><p>Hemos construido una fundación realmente sólido. Ahora entender la autenticación SSH va a ser mucho más fácil para ti.</p><!--kg-card-begin: html--><h2 id="como-funciona-la-autenticacion-ssh">Cómo Funciona la Autenticación SSH</h2><!--kg-card-end: html--><p>Si no has configurado la autenticación SSH con Github, entonces después de terminar este artículo puedes seguir la <a href="https://docs.github.com/es/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account">documentación detallada de Github sobre cómo hacerlo</a>. Por ahora, por favor quédate hasta el final.</p><p>La cruz del proceso de configuración es que crees un par de claves pública y privada en tu computadora local. Luego subes tu clave pública a tu perfil de Github – ¡y eso es todo!</p><p>Después que hemos creado nuestro par de claves pública y privada, en Ubuntu, el par de claves se almacenan dentro de la carpeta <code>~/.ssh</code>.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735035539565/1f837d9b-9717-44fa-a5e0-5801276113df.png" class="kg-image" alt="Showing my public key from my terminal." width="4380" height="243" loading="lazy"></figure><p>La imagen de arriba muestra mi clave pública. Tengo esta clave pública cargada en mi perfil de Github:</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735035898284/1ef9133a-895b-4847-a7ac-6157fdcc3143.png" class="kg-image" alt="Showing my GitHub profile settings where my public key is uploaded for SSH authentication with GitHub." width="4287" height="1398" loading="lazy"></figure><p>Ahora, cuando ejecuto <code>git push</code> o cualquier otro comando que se quiera comunicar con Github, estaré autenticado usando la autenticación SSH.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735053545173/6fb293f1-f90a-4b64-b026-082d8676afae.png" class="kg-image" alt="The illustration of SSH authentication process between client and GitHub server." width="4082" height="2574" loading="lazy"></figure><p>SSH es un protocolo cliente-servidor. Nuestra computadora que ejecuta <code>git push</code> es el cliente SSH. Github es el servidor SSH.</p><p>El cliente comienza con el proceso de autenticación al solicitar nuestra clave pública que tenemos dentro de <code>~/.ssh</code>.</p><p>Luego el cliente prepara un mensaje el cual tiene nuestra clave pública. Y luego el cliente genera la firma usando la clave privada correspondiente.</p><p>La clave pública y la firma se envían a Github. Al recibir este mensaje, Github hace dos cosas:</p><p>Primero, verifica si la clave pública mencionada en el mensaje se conecta a un perfil de Gihtub o no. Ya que subimos nuestra clave pública a Github, este paso se realizó con éxito.</p><p>Segundo, Github verifica la firma usando la clave pública que hemos subido.</p><p>Hemos aprendido que si la verificación de la firma termina siendo exitoso significa que solamente la persona quién está en posesión de la clave privada correspondiente podría haber enviado el mensaje.</p><p>Ya que solamente tenemos la clave privada vinculada a la clave pública cargada, esto prueba a Github que en realidad somos nosotros intentando comunicarse con Github y no un atacante.</p><p>Ahora, Github es 100% seguro que somos la persona correcta, estamos autenticados exitosamente, y a nuestro <code>git push</code> se le permite proceder.</p><p>Ves, se volvió fácil de entender la autenticación SSH ya que aprendiste los fundamentos.</p><figure class="kg-card kg-image-card"><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1735120630613/e9a8bbba-3cc4-43e7-8369-865ab377fb87.png" class="kg-image" alt="A xkcd comic depicting Cueball thinking to share his private key. A dangerous move!" width="733" height="282" loading="lazy"></figure><p>La imagen de arriba es del cómic popular xkcd. El personaje allí (llamado Cueball) está pensando en revelar su clave privada. Espero que ahora sepas por qué está mal revelar tu clave privada.</p><p>Si revelas tu clave privada entonces alguien más puede autenticarse a Github en tu nombre. No quieres que eso suceda, ¿verdad? ;)</p><p>Así que, siempre asegúrate de mantener tu clave privada para ti mismo nada más.</p><!--kg-card-begin: html--><h2 id="resumiendo-todo">Resumiendo Todo</h2><!--kg-card-end: html--><p>Si has llegado hasta acá, entonces felicitaciones 🥳.</p><p>Has aprendido como funciona en realidad la autenticación SSH – cuando la firma fue verificado exitosamente por Github, le confirma a Github que somos nosotros quienes le estamos hablando, no un atacante.</p><p>A lo largo adquiriste una comprensión fundamental de la encriptación de clave simétrica, encriptación de clave asimétrica, funciones hash criptográficas y firmas digitales.</p><p>Gracias por estar conmigo en esta, espero que te vayas con algunos nuevos y valiosos aprendizajes.</p><p>Pongo ideas y recursos útiles en mi Twitter. <a href="https://twitter.com/vkwebdev"><strong>Deberías seguirme allí</strong></a>. Respetaré tu tiempo.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ La guía definitiva para SSH: Configurando claves SSH ]]>
                </title>
                <description>
                    <![CDATA[ Bienvenido a nuestra guía definitiva para configurar claves SSH (Secure Shell). Este tutorial te llevará a través de los puntos básicos para crear claves SSH y cómo administrar múltiples claves y pares-claves. Crea un nuevo par claves SSH Abre una terminal y ejecuta el siguiente comando: ssh-keygen Verás el siguiente ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/la-guia-definitiva-para-ssh-configuracion-de-claves-ssh/</link>
                <guid isPermaLink="false">5ffe1f7d8c7cd154bb9869b4</guid>
                
                    <category>
                        <![CDATA[ SSH ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Israel Palma ]]>
                </dc:creator>
                <pubDate>Sat, 20 Mar 2021 05:56:51 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2021/03/photo-1453134765485-7f9a71a803d5-1-.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Bienvenido a nuestra guía definitiva para configurar claves SSH (Secure Shell). Este tutorial te llevará a través de los puntos básicos para crear claves SSH y cómo administrar múltiples claves y pares-claves.</p><h2 id="crea-un-nuevo-par-claves-ssh"><strong>Crea un nuevo par claves SSH</strong></h2><p>Abre una terminal y ejecuta el siguiente comando:</p><pre><code class="language-text">ssh-keygen</code></pre><p>Verás el siguiente texto:</p><pre><code class="language-text">// Generando clave par rsa pública/privada.
// Ingresa el archivo en cual guardar la clave (/home/nombre_usuario/.ssh/id_rsa):

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):</code></pre><p>Presiona enter para guardar tus claves al directorio por defecto <code>/home/nombre_usuario/.ssh</code></p><p>Entonces se te requerirá que escribas tu contraseña:</p><pre><code class="language-text">// Ingresa una contraseña (vacío para guardar sin contraseña):
Enter passphrase (empty for no passphrase):</code></pre><p>Es recomendable introducir una contraseña para contar con una capa extra de seguridad. Al configurar una contraseña puedes prevenir el acceso no autorizado a tus servidores y cuentas; en el caso que alguien llegara a tener acceso a tu clave privada SSH o a tu computadora.</p><p>Luego de introducir y confirmar tu contraseña, verás lo siguiente:</p><pre><code class="language-text">// Tu identificación ha sido guardada en /home/nombre_usuario/.ssh/id_rsa.
// Tu clave pública ha sido guardada en /home/username/.ssh/id_rsa.pub.
// La huella digital (fingerprint) de tu clave es:
// SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 username@871e129f767b
// La imagen randomart (arte aleatorio) de tu clave es:

Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/qRoWhRcIBTw0D4KpTUyK6YepyL6RQ2CQrtWsaicCb4 username@871e129f767b
The key's randomart image is:
+---[RSA 2048]----+
| .o=+....        |
|+.*o+o .         |
|+X.=o o          |
|@.=.oo .         |
|=O ...o S        |
|o.oo . .         |
|.E+ . . . .      |
|oo . ... +       |
|=.. .o. . .      |
+----[SHA256]-----+</code></pre><p>Ahora ya tienes un par de claves (privada y pública) que puedes usar para tener acceso a servidores remotos de manera segura y manejar la autenticación de programas de línea de comandos como Git.</p><h2 id="administra-m-ltiples-claves-ssh"><strong>Administra múltiples claves SSH</strong></h2><p>Aunque es considerado buena práctica tener un sólo par de claves pública-privada por dispositivo, a veces necesitas usar múltiples claves o tienes nombres para claves no-ortodoxos. Por ejemplo, podrías estar usando un par de claves SSH para trabajar en los proyectos internos de tu compañía, pero podrías estar usando una clave distinta para tener acceso a los servidores de un cliente. Además, podrías estar utilizando una clave diferente para tener acceso a tu propio servidor privado.</p><p>Administrar claves SSH puede tornarse difícil e incómodo tan pronto como necesites utilizar una segunda clave. Tradicionalmente, usarías &nbsp;<code>ssh-add</code> para guardar tus claves en &nbsp;<code>ssh-agent</code>, escribiendo la contraseña para cada clave. El problema es que necesitarías hacer esto cada vez que reinicies tu computadora, lo cual se vuelve tedioso rápidamente.</p><p>Una mejor solución es automatizar la adición y guardado de claves y especificar qué clave utilizar cuando se ingrese a ciertos servidores.</p><h3 id="ssh-config"><strong><strong>SSH <code>config</code></strong></strong></h3><p>Entra SSH <code>config</code>, &nbsp;que es un archivo de configuración por-usuario para la comunicación SSH. Crea un nuevo archivo: <code>~/.ssh/config</code> y ábrelo para escribir:</p><pre><code class="language-bash">nano ~/.ssh/config</code></pre><h3 id="administrando-nombres-personalizados-de-claves-ssh"><strong>Administrando nombres personalizados de </strong>claves<strong> <strong>SSH</strong></strong></h3><p>La primera cosa que vamos a resolver usando este archivo <code>config</code> es evitar tener que agregar nombres personalizados para las claves SSH usando <code>ssh-add</code>. Asumiendo que tu clave privada se llame &nbsp;<code>~/.ssh/id_rsa</code>, agrega lo siguiente al archivo <code>config</code>:</p><pre><code class="language-bash">Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes</code></pre><p>A continuación, abre otra terminal para asegurarte que &nbsp;<code>~/.ssh/id_rsa</code> no esté en &nbsp;<code>ssh-agent</code> y corre el siguiente comando:</p><pre><code class="language-text">ssh-add -D</code></pre><p>Este comando removerá todas las claves de la sesión &nbsp;<code>ssh-agent</code> actualmente activa.</p><p>Ahora si intentas clonar un repositorio GitHub, tu archivo <code>config</code> usará la clave en <code>~/.ssh/ida_rsa</code>.</p><p>Aquí están otros ejemplos útiles de configuración:</p><pre><code class="language-bash">Host bitbucket-corporate
        HostName bitbucket.org
        User git
        IdentityFile ~/.ssh/id_rsa_corp
        IdentitiesOnly yes</code></pre><p>Ahora puedes usar &nbsp;<code>git clone git@bitbucket-corporate:company/project.git</code></p><pre><code class="language-bash">Host bitbucket-personal
        HostName bitbucket.org
        User git
        IdentityFile ~/.ssh/id_rsa_personal
        IdentitiesOnly yes</code></pre><p>Ahora puedes usar &nbsp;<code>git clone git@bitbucket-personal:username/other-pi-project.git</code></p><pre><code class="language-bash">Host myserver
        HostName ssh.username.com
        Port 1111
        IdentityFile ~/.ssh/id_rsa_personal
        IdentitiesOnly yes
        User username
        IdentitiesOnly yes</code></pre><p>Ya puedes usar SSH para ingresar a tu servidor usando <code>ssh myserver</code>. Ya no necesitarás ingresar un puerto (port) y nombre de usuario cada vez que quieras ingresar a tu servidor privado.</p><h3 id="administraci-n-de-contrase-as"><strong>Administración de contraseñas</strong></h3><p>La pieza final del rompecabezas es el manejo o administración de contraseñas. Se puede volver una tarea tediosa tener que ingresar una contraseña cada vez que inicializas una conexión SSH. Para evitar esta situación, podemos usar software de administración de contraseñas que viene con macOS y varias distribuciones de Linux.</p><p>Para este tutorial usaremos Keychain Access, un programa de macOS. Empecemos por agregar tu clave a Keychain Access pasando la opción <code>-K</code> al comando <code>ssh-add</code>:</p><pre><code class="language-bash">ssh-add -K ~/.ssh/id_rsa_whatever</code></pre><p>Ahora podrás ver tu clave SSH en Keychain Access:</p><p>Pero si quitas las claves de &nbsp;<code>ssh-agent</code> con &nbsp;<code>ssh-add -D</code> o reinicias tu computadora, esta te volverá a solicitar la contraseña y usuario cuando trates de usar SSH. Resulta que hay un obstáculo más que sortear. Abre tu archivo &nbsp;<code>config</code> usando <code>nano ~/.ssh/config</code> y agrega lo siguiente: &nbsp;</p><pre><code class="language-bash">Host *
  AddKeysToAgent yes
  UseKeychain yes</code></pre><p>Con esto, cuando sea que uses <code>ssh</code> la computadora buscará automáticamente las claves en Keychain Access. Si encuentra una, ya no se te solicitará una contraseña cada que uses SSH. Las claves también se agregan automáticamente a <code>ssh-agent</code> cada vez que reinicias tu computadora.</p><p>¡Ahora que sabes lo básico de crear nuevas claves SSH y administrar varias, sal a ponerlo en práctica! </p><p>Traducido del artículo - <a href="https://www.freecodecamp.org/news/the-ultimate-guide-to-ssh-setting-up-ssh-keys/">The ultimate guide to ssh setting up ssh keys</a></p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Ejemplos de RSync – Opciones de Rsync y Cómo Copiar Archivos a través de SSH ]]>
                </title>
                <description>
                    <![CDATA[ Rsync significa "sincronización remota". Es una herramienta de sincronización de archivos local y remota que te ayuda a transferir archivos de manera eficiente. ¿Qué es RSync? Rsync es más rápido que herramientas como Secure Copy Protocol (SCP). Utiliza el algoritmo de transferencia delta que minimiza la transferencia de datos al ]]>
                </description>
                <link>https://www.freecodecamp.org/espanol/news/rsync-ejemplos-opciones-y-copiar-archivos-atraves-ssh/</link>
                <guid isPermaLink="false">5fd48f9e8c7cd154bb973f37</guid>
                
                    <category>
                        <![CDATA[ SSH ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Sebastian J. Bustamante ]]>
                </dc:creator>
                <pubDate>Mon, 14 Dec 2020 13:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/espanol/news/content/images/2020/12/rsync-1-.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Rsync significa "sincronización remota". Es una herramienta de sincronización de archivos local y remota que te ayuda a transferir archivos de manera eficiente.</p><h2 id="-qu-es-rsync">¿Qué es RSync?</h2><p>Rsync es más rápido que herramientas como Secure Copy Protocol (SCP). Utiliza el algoritmo de transferencia delta que minimiza la transferencia de datos al copiar solo las secciones de un archivo que se han actualizado.</p><p>Algunas de las características adicionales de Rsync incluyen:</p><ul><li>Admite la copia de enlaces, dispositivos, propietarios, grupos y permisos</li><li>No requiere privilegios de superusuario</li><li>Transferencias de archivos mediante pipelines para minimizar los costes de latencia</li></ul><p>Solo puedes transferir archivos de local a remoto o de remoto a local. Rsync no admite transferencias de archivos remotas a remotas.</p><h2 id="-c-mo-funciona-rsync"><strong>¿Cómo funciona RSync?</strong></h2><p>Ahora que sabe qué es Rsync, veamos cómo trabajar con él.</p><p>Rsync funciona de manera similar a otras herramientas de administración de servidores remotos como SSH y SCP.</p><p>Esta es la sintaxis básica de Rsync:</p><pre><code>rsync [options] source [destination]</code></pre><p>Esta es la sintaxis para transferir un archivo desde el sistema local a un servidor remoto. También se denomina operación "push".</p><pre><code>rsync local_file_path user@remote-host:remote_file_path</code></pre><p>Esta es la explicación de cómo transferir un archivo desde un servidor remoto al sistema local, también llamada operación "pull".</p><pre><code>rsync user@remote-host:remote_file_path local_file_path</code></pre><blockquote>Nota: cuando trabaje con sistemas remotos, asegúrese de tener acceso SSH al sistema remoto. Rsync establece la conexión mediante SSH para permitir la transferencia de archivos.</blockquote><h2 id="-c-mo-usar-indicadores-en-rsync">¿Cómo usar Indicadores en RSync?</h2><p>Rsync te permite agregar opciones adicionales a través de indicadores de línea de comandos. Veamos algunos indicadores útiles.</p><h3 id="recursivo">Recursivo</h3><p>Si agrega la opción <strong>-r</strong>, RSync ejecutará una transferencia de archivos recursiva. Esto es útil cuando se trabaja con directorios. Aquí hay un ejemplo:</p><pre><code>rsync -r user@remote-host:remote_directory/ local_directory</code></pre><h3 id="archivo">Archivo</h3><p>El indicador <strong>-a</strong> se usa para conservar los enlaces simbólicos mientras se transfieren archivos. El indicador de archivo también conserva los archivos especiales y de dispositivo, las horas de modificación y los permisos del directorio de origen.</p><p>El indicador archivo también sincroniza archivos de forma recursiva, por lo que se usa más que el indicador recursivo. Así es como se usa:</p><pre><code>rsync -a user@remote-host:remote_directory/ local_directory</code></pre><h3 id="compresi-n">Compresión</h3><p>También puedescomprimir archivos usando el indicador <strong>-z</strong>. La compresión de archivos puedes reducir la carga de la red y acelerar la transferencia de archivos.</p><pre><code>rsync -az user@remote-host:remote_directory/ local_directory</code></pre><h3 id="progreso">Progreso</h3><p>Para transferencias de archivos grandes, es útil conocer el progreso de la operación. Puedes utilizar el indicador <strong>-P</strong> para conocer el progreso de la transferencia de archivos. Con Rsync, también puedes reanudar las transferencias de archivos si se interrumpen.</p><pre><code>rsync -aP user@remote-host:remote_directory/ local_directory</code></pre><h3 id="verboso">Verboso</h3><p>Finalmente, el comando verboso nos ayuda &nbsp;a comprender cada paso de la transferencia de archivos. Puedes usar el indicador <strong>-v</strong> para esto.</p><pre><code>rsync -av user@remote-host:remote_directory/ local_directory</code></pre><p>También puedes usar el comando de ayuda con RSync para obtener una lista de todas las opciones y indicadores.</p><pre><code>rsync --help</code></pre><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/espanol/news/content/images/2020/12/Screenshot-2020-09-02-at-9.07.47-PM.png" class="kg-image" alt="Screenshot-2020-09-02-at-9.07.47-PM" srcset="https://www.freecodecamp.org/espanol/news/content/images/size/w600/2020/12/Screenshot-2020-09-02-at-9.07.47-PM.png 600w, https://www.freecodecamp.org/espanol/news/content/images/size/w1000/2020/12/Screenshot-2020-09-02-at-9.07.47-PM.png 1000w, https://www.freecodecamp.org/espanol/news/content/images/2020/12/Screenshot-2020-09-02-at-9.07.47-PM.png 1576w" sizes="(min-width: 720px) 720px" width="1576" height="1120" loading="lazy"><figcaption>ayuda rsync</figcaption></figure><h2 id="conclusi-n">Conclusión</h2><p>Rsync simplifica todo el proceso de transferencia de archivos al ofrecer una herramienta robusta, versátil y flexible en comparación con alternativas como SCP.</p><p>RSync es ideal para operaciones de mantenimiento, copias de seguridad y operaciones generales de archivos entre máquinas locales y remotas.</p><h2 id="referencias"><strong><strong>Referenc</strong>ias</strong></h2><ul><li><a href="https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps" rel="nofollow noopener">https://www.digitalocean.com/community/tutorials/how-to-use-rsync-to-sync-local-and-remote-directories-on-a-vps</a></li><li><a href="https://linux.die.net/man/1/rsync" rel="nofollow noopener">https://linux.die.net/man/1/rsync</a></li><li><a href="https://www.geeksforgeeks.org/rsync-command-in-linux-with-examples/" rel="nofollow noopener">https://www.geeksforgeeks.org/rsync-command-in-linux-with-examples/</a></li></ul><p>Soy Manish y escribo sobre Ciberseguridad, Inteligencia Artificial y DevOps. Si te gustó este artículo, <a href="https://medium.com/manishmshiva">puedes encontrar mi blog aquí</a>.</p><p>Traducido del artículo de <a href="https://www.freecodecamp.org/news/author/manishmshiva/"><strong>Manish Shivanandhan</strong></a> - <strong><a href="https://www.freecodecamp.org/news/rsync-examples-rsync-options-and-how-to-copy-files-over-ssh/">RSync Examples – Rsync Options and How to Copy Files Over SSH</a></strong><br></p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
