<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ubuntu on devcodenote.gitlab.io</title><link>https://devcodenote.gitlab.io/tags/ubuntu/</link><description>Recent content in Ubuntu on devcodenote.gitlab.io</description><generator>Hugo -- gohugo.io</generator><language>es-es</language><lastBuildDate>Mon, 25 Aug 2025 11:02:44 -0600</lastBuildDate><atom:link href="https://devcodenote.gitlab.io/tags/ubuntu/index.xml" rel="self" type="application/rss+xml"/><item><title>Cómo configurar proxy ndppd (Ubuntu)</title><link>https://devcodenote.gitlab.io/posts/how-to-configure-ndpmd-proxy/</link><pubDate>Mon, 25 Aug 2025 11:02:44 -0600</pubDate><guid>https://devcodenote.gitlab.io/posts/how-to-configure-ndpmd-proxy/</guid><description>&lt;img src="https://devcodenote.gitlab.io/images/f238a398bf6612710b09c2ac99d801153d3fbda208a1d31b6b9fbe63e92ef44414815bab5c548ec98ca6d232e4594cd169bebb215a8584ab8b3fa7e77d85d789.png" alt="Featured image of post Cómo configurar proxy ndppd (Ubuntu)" />&lt;h2 id="que-es-ndp-proxy-daemon">Que es NDP Proxy Daemon
&lt;/h2>&lt;p>Un NDP Proxy es un programa que escucha las Neighbor Solicitation (ICMPv6 tipo 135) en la interfaz WAN, esto se usa cuando tu ISP no da un prefijo mayor a /64 o te dio un /60 y se te acabo, en mi caso solo me dio un /64.&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/b89ba80b9a4563a6479530b18d3c54df7d17fe911d77bcf7b02b25825ab0b3869fa4ced240ea55dddc5e0df6caacb8ce9962ff6ccc6b9c10cff0546a4c09e604.png"
loading="lazy"
alt="Ipv6 con prefijo /64"
>&lt;/p>
&lt;p>para poder crear otra subnet es necesario otro /64 como se puede observar en la tabla.&lt;/p>
&lt;h3 id="ipv6-subnet-table">IPv6 Subnet Table
&lt;/h3>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Prefix&lt;/th>
&lt;th>Subnet Example&lt;/th>
&lt;th>Total IP Addresses&lt;/th>
&lt;th># of /64 nets&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->124&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->60&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->120&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->56&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->116&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->52&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>16&lt;/td>
&lt;td>xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->112&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->48&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20&lt;/td>
&lt;td>xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->108&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->44&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>24&lt;/td>
&lt;td>xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->104&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->40&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>28&lt;/td>
&lt;td>xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->100&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->36&lt;!-- raw HTML omitted -->&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>32&lt;/td>
&lt;td>xxxx:xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->96&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>##########&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>36&lt;/td>
&lt;td>xxxx:xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->92&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>268,435,456&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>40&lt;/td>
&lt;td>xxxx:xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->88&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>16,777,216&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>44&lt;/td>
&lt;td>xxxx:xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->84&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>1,048,576&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>48&lt;/td>
&lt;td>xxxx:xxxx:xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->80&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>65,536&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>52&lt;/td>
&lt;td>xxxx:xxxx:xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->76&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>4,096&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>56&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->72&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>256&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>60&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->68&lt;!-- raw HTML omitted -->&lt;/td>
&lt;td>16&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>64&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->64&lt;!-- raw HTML omitted --> (18,446,744,073,709,551,616)&lt;/td>
&lt;td>1&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>68&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->60&lt;!-- raw HTML omitted --> (1,152,921,504,606,846,976)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>72&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->56&lt;!-- raw HTML omitted --> (72,057,594,037,927,936)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>76&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->52&lt;!-- raw HTML omitted --> (4,503,599,627,370,496)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>80&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->48&lt;!-- raw HTML omitted --> (281,474,976,710,656)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>84&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->44&lt;!-- raw HTML omitted --> (17,592,186,044,416)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>88&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->40&lt;!-- raw HTML omitted --> (1,099,511,627,776)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>92&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->36&lt;!-- raw HTML omitted --> (68,719,476,736)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>96&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->32&lt;!-- raw HTML omitted --> (4,294,967,296)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>100&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->28&lt;!-- raw HTML omitted --> (268,435,456)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>104&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->24&lt;!-- raw HTML omitted --> (16,777,216)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>108&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->20&lt;!-- raw HTML omitted --> (1,048,576)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>112&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->16&lt;!-- raw HTML omitted --> (65,536)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>116&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:x::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->12&lt;!-- raw HTML omitted --> (4,096)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>120&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->8&lt;!-- raw HTML omitted --> (256)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>124&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx::&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->4&lt;!-- raw HTML omitted --> (16)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>128&lt;/td>
&lt;td>xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx&lt;/td>
&lt;td>2^&lt;!-- raw HTML omitted -->0&lt;!-- raw HTML omitted --> (1)&lt;/td>
&lt;td>0&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>&lt;a class="link" href="https://docs.netgate.com/pfsense/en/latest/network/ipv6/subnets.html" target="_blank" rel="noopener"
>IPv6 Subnetting&lt;/a>&lt;/p>
&lt;p>En algunas ocasiones, es indispensable entender cómo funciona para diagnosticar errores.&lt;/p>
&lt;h2 id="ndp-proxy-de-forma-manual">NDP Proxy de forma manual
&lt;/h2>&lt;p>para realizar de forma manual, primero tenemos que asignarle una ipv6 a uno de nuestros clientes, en mi caso cada cliente recibe la ip mediante SLAAC (Stateless Address Auto-Configuration).&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/c0f208b8e16f1e5a24dbbc09266ba0bcc5ca71fb4f18d7be460c12cf6e76ff7614b1ae4f64207173739ca7c2bd4fa93e5ca9e535c3b53f0488581ba538f2b2e9.png"
loading="lazy"
alt="Kali linux ipv6 type SLAAC"
>&lt;/p>
&lt;p>para esto primero se tiene que hacer una traducción de dirección, como se puede observar la ip fd78:e9fa:9f28:0:9c0d:dea4:8e6f:7b66 es de tipo ULA (Unique Local Address), esto se hace con ip6tables mediante NETMAP.&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/e3725a90477f92d912f8862a8f6a8bd04e58a2e9dc677f6587ae07bcea368a4582751d0cb934902c76f7102f61cf279a7d6c344cc8f4da9def0134f970e5bc97.png"
loading="lazy"
alt="Wireshark ICMP type ULA"
>&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>NETMAP&lt;/strong>&lt;br>
This target allows you to statically map a whole network of addresses onto another network of addresses.&lt;br>
It can only be used from rules in the nat table. &lt;code>--to address[/mask]&lt;/code>&lt;br>
Network address to map to. The resulting address will be constructed in the following way:&lt;br>
All &amp;lsquo;one&amp;rsquo; bits in the mask are filled in from the new &lt;code>address&lt;/code>.&lt;br>
All bits that are zero in the mask are filled in from the original address.&lt;br>
IPv6 support available since Linux kernels &amp;gt;= 3.7.&lt;/p>
&lt;/blockquote>
&lt;h3 id="implementacion-de-netmap-con-iptables">implementacion de NETMAP con IPTABLES
&lt;/h3>&lt;p>Para implementar NETMAP con ip6tables, debemos conocer el prefijo delegado por el ISP y el prefijo ULA que utilizamos para la traducción. El comando con ip6tables queda de la siguiente forma:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo ip6tables -t nat -I POSTROUTING -s fd78:e9fa:9f28::/64 -o eth0 -j NETMAP --to 2806:103e:15:6663::/64
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sudo ip6tables -t nat -I PREROUTING -i eth0 -d 2806:103e:15:6663::/64 -j NETMAP --to fd78:e9fa:9f28::/64
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>una vez realizada la traducción de prefijo los paquetes se ven de la siguiente forma.&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/007372aa0fb2fe59d4ed8a5cd07f0acebf9c722834ebf9ce6edc3342b3589a7d6b1dad6a51b5b533df9b417b2fe1a60f3d8cdba45374fe66fcdc6df5218f6f6a.png"
loading="lazy"
alt="alt text"
>&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/62d261de8af9b00b1fdba062056e6a9595afe23316fd469b936c5643a3db58d1614ef8600a79cbd56dd4449babda7ff0a703942aafd6ac55e867bf89e3cf180f.png"
loading="lazy"
alt="alt text"
>&lt;/p>
&lt;p>ahora se necesita realizar el proxy de Neighbor Solicitation esto se usa para &amp;ldquo;Un nodo envía un mensaje NS para solicitar la dirección MAC (la dirección física) de un nodo vecino cuya dirección IPv6 conoce&amp;rdquo;, el proxy hace que el router en el que estamos implementado ndppd proxy responda con un Neighbor Advertisement (NA), entonces primero se envia Neighbor Solicitation después el cliente debe responder con Neighbor Advertisement para posteriormente almacenarse en una tabla de Neighbor Cache Table.&lt;/p>
&lt;p>Para lograr esto en el router, añadimos lo siguiente:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo ip -6 neigh add proxy 2806:103e:15:6663:9c0d:dea4:8e6f:7b66 dev eth0
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"># En sysctl hablilitamos proxy_ndp &lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sysctl -w net.ipv6.conf.all.proxy_ndp&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>sysctl -w net.ipv6.conf.eth0.proxy_ndp&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Como se puede observar, ya se realiza la traducción y se responden los paquetes.&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/d4e272272d3263429ae6f7743f001f744300294217d33ac935a8b487fde1e230a4a9c899ccaca1cf25d3ef4148efc685a783ccfe4341140cc55f2643c1dfa1a6.png"
loading="lazy"
alt="alt text"
>&lt;/p>
&lt;p>Con neigh show se puede ver los proxy activos&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ip -6 neigh show proxy dev eth0
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="instalacion-de-ndppd">Instalacion de ndppd
&lt;/h2>&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>sudo apt-get install ndppd
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>la configuración se encuentra en nano /etc/ndppd.conf
insertamos esto para una configuración básica, en el caso de rule es el prefijo que nos da el ISP&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>route-ttl &lt;span style="color:#ae81ff">30000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>proxy eth0 &lt;span style="color:#f92672">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> router yes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> timeout &lt;span style="color:#ae81ff">500&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ttl &lt;span style="color:#ae81ff">30000&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> promiscuous yes
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rule 2806:103e:15:6663::/64 &lt;span style="color:#f92672">{&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> static
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Con esto, la configuración estaría completa. Para hacer debug se usa:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>ndppd -vvv
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Cómo configurar claves SSH en Ubuntu.</title><link>https://devcodenote.gitlab.io/posts/como-configurar-claves-ssh-en-ubuntu/</link><pubDate>Sat, 07 Jun 2025 10:30:00 -0600</pubDate><guid>https://devcodenote.gitlab.io/posts/como-configurar-claves-ssh-en-ubuntu/</guid><description>&lt;img src="https://devcodenote.gitlab.io/images/88df4720bbf7e855c081b8d23fda37897fe1836efef71c1fd2b15b6b0820eb35119d74f3026d2a4df073b83cdcf272dc0291cc6c51bcdbfa1fb2a2dfe36c55ad.png" alt="Featured image of post Cómo configurar claves SSH en Ubuntu." />&lt;p>En este blog se va a configurar las claves ssh en ubuntu para tener acceso, para este tutorial se va a usar WLS pero se puede hacer desde la consola de windows.&lt;/p>
&lt;p>Lo primero es generar la clave en el cliente&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>ssh-keygen -t rsa -b &lt;span style="color:#ae81ff">4096&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/4453e150749562141c9ef23723bfb2bfa8d74b6cec46ebe3321a8c65f80897adc5a8a65f8f9dbaf20fa82cb189f0d28e22bb94b6b74863935f02303d8b4729dd.png"
loading="lazy"
alt="Name"
>&lt;/p>
&lt;p>una vez realizado nos va a dejar dos archivos&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/9047ace5e67eba2bb94d5868f11716c691e45154a412868904c14052224c79d0e3d06ddf7ee8d9802652f37eff869f5662d70ce0364f4c335b964511871644c8.png"
loading="lazy"
alt="Name"
>&lt;/p>
&lt;p>en este caso se va a realizar de manera manual al servidor&lt;/p>
&lt;p>para esto nos vamos a la carpeta .ssh&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/736b449fbcaf98bb21935f0a2e4f3749ead672c868921dbf83ccea7561a8ed27f35c2efcd43d63af9b91e81299be4645a57b312eb76b6260c21e61d7d9ed63f1.png"
loading="lazy"
alt="Name"
>&lt;/p>
&lt;p>en el archivo authorized_keys agregamos ssh-rsa&lt;/p>
&lt;p>&lt;code>echo &amp;quot;ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDNz261zvu3Ig32cKrdloBMF96gYVHRqVeot4TBWx/lG61V.....&amp;quot; &amp;gt;&amp;gt; ~/.ssh/authorized_keys&lt;/code>&lt;/p>
&lt;p>si nos solicita la contraseña al entrar se puede usar ssh agent&lt;/p>
&lt;p>&lt;code>ssh-add&lt;/code>&lt;/p>
&lt;p>&lt;img src="https://devcodenote.gitlab.io/images/88df4720bbf7e855c081b8d23fda37897fe1836efef71c1fd2b15b6b0820eb35119d74f3026d2a4df073b83cdcf272dc0291cc6c51bcdbfa1fb2a2dfe36c55ad.png"
loading="lazy"
alt="Name"
>&lt;/p>
&lt;p>Esto nos evitará insertar la contraseña al iniciar&lt;/p></description></item></channel></rss>