tags/utils StyXman's glob http://grulicueva.homelinux.net/~mdione/glob//tags/utils/ StyXman's glob ikiwiki 2010-01-27T22:55:54Z charla-ssh-scp-screen http://grulicueva.homelinux.net/~mdione/glob//posts/charla-ssh-scp-screen/ 2010-01-27T22:55:54Z 2009-04-18T21:49:35Z <p>El otro día dí una charlita un poquito larga de ssh/scp y screen en el <a href="http://iate.oac.uncor.edu/">IATE</a>, el lugar donde laburo. En la misma hablo de <code>ssh/scp</code> básico, mas cómo poner claves públicas/privadas y cómo usar el <code>ssh-agent</code> para administrarlas (algo de lo que <a href="http://grulicueva.homelinux.net/~mdione/glob/posts/ssh-agent/">ya hablé en este glob</a>), mas otros temas como el X11 forwarding y el agent-forwarding. Además hablé de <code>screen</code>, una herramineta que se complementa muy bien con <code>ssh</code>. Dejo las filminas <a href="http://grulicueva.homelinux.net/~mdione/charlas/ssh-screen-2.odp">acá</a>.</p> <p><a href="http://grulicueva.homelinux.net/~mdione/glob//tags/utils/../security/">security</a> <span class="selflink">utils</span></p> ssh-agent http://grulicueva.homelinux.net/~mdione/glob//posts/ssh-agent/ 2010-01-27T22:55:54Z 2008-09-20T01:23:59Z <p>En este post veremos cómo crear pares de claves pública/privada con passphrases, y cómo usar <code>ssh-agent</code> para no tener que andar tipeándolas a cada rato.</p> <p>Lo primero es generar el par. Hay dos tipos de pares de claves, RSA y DSA. Los pares se guardan en nuestro <code>.ssh/</code>, así que antes de generar un par nos fijamos qué hay allí:</p> <pre><code>mdione@cobra:~&#036; ls -l .ssh/ total 28 -rw-r--r-- 1 mdione mdione 190 2008-02-26 15:29 config -rw------- 1 mdione mdione 1743 2008-09-19 16:55 id_dsa -rw-r--r-- 1 mdione mdione 394 2008-09-19 16:55 id_dsa.pub -rw------- 1 mdione mdione 11598 2008-09-02 10:35 known_hosts -rw------- 1 mdione mdione 9388 2008-06-05 22:59 known_hosts.old </code></pre> <p>Hay una par DSA (<code>id_dsa</code> e <code>id_dsa.pub</code>), así que creamos un par RSA para no pisarlo:</p> <pre><code>mdione@cobra:~&#036; ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/mdione/.ssh/id_rsa): *** Enter passphrase (empty for no passphrase): *** Enter same passphrase again: Your identification has been saved in /home/mdione/.ssh/id_rsa. Your public key has been saved in /home/mdione/.ssh/id_rsa.pub. The key fingerprint is: 1c:da:2b:a8:97:72:7e:ab:ff:ea:bb:e8:6b:64:4c:93 mdione@cobra The key's randomart image is: +--[ RSA 2048]----+ | | | | | . . | | E + . | | o .. S | | +. . | | o... . | | ..=... | | .B**B*. | +-----------------+ </code></pre> <p>Notar que en <code>***</code> <code>ssh-keygen</code> pide dos veces una <em>passphrase</em>. El término <em>passphrase</em> viene de la época en que las passwords sólo podían ser de un maximo de 8 caracteres. La passphrase puede ser de cualquier longitud; una longitud buena está en los 15-20 caracteres. Se puede poner una passphrase nula, pero por motivos de seguridad les sugiero que <strong>no</strong> lo hagan. Si aprenden bien a usar <code>ssh-agent</code> van a tener que tipearla poco.</p> <p>Ahora copiamos la parte pública al servidor al que queremos entrar:</p> <pre><code>mdione@cobra:~&#036; ssh-copy-id -i .ssh/id_rsa.pub beetroot.except.com.ar *** mdione@beetroot.except.com.ar's password: Now try logging into the machine, with "ssh 'beetroot.except.com.ar'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. </code></pre> <p>Probamos entrar al server para ver que el par ande:</p> <pre><code>mdione@cobra:~&#036; ssh beetroot.except.com.ar *** Enter passphrase for key '/home/mdione/.ssh/id_rsa': Last login: Fri Sep 19 12:18:16 2008 from ginger.except.com.ar mdione@beetroot:~&#036; logout Connection to beetroot.except.com.ar closed. </code></pre> <p>Notar que en <code>***</code> pide la passphrase del par que acabamos de crear.</p> <p>Ahora a usar <code>ssh-agent</code>. <code>ssh-agent</code> se inicia en toda sesión en una distro moderna, podemos verlo dando vueltas en nuestro background:</p> <pre><code>mdione@cobra:~&#036; ps fax | grep ssh-agent 2997 ? Ss 0:00 \_ ssh-agent screen </code></pre> <p>En este caso lo tengo corriendo antes de un <code>screen</code>, pero en un desktop podemos ver algo de la pinta <code>/usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-session-manager</code>.</p> <p>Una vez que vemos el <code>ssh-agent</code> dando vueltas por ahí, veamos qué claves tiene:</p> <pre><code>mdione@cobra:~&#036; ssh-add -l The agent has no identities. </code></pre> <p>Ok, agreguemos identidades al agente:</p> <pre><code>mdione@cobra:~&#036; ssh-add /home/mdione/.ssh/id_rsa *** Enter passphrase for /home/mdione/.ssh/id_rsa: Identity added: /home/mdione/.ssh/id_rsa (/home/mdione/.ssh/id_rsa) mdione@cobra:~&#036; ssh-add -l 2048 1c:da:2b:a8:97:72:7e:ab:ff:ea:bb:e8:6b:64:4c:93 /home/mdione/.ssh/id_rsa (RSA) </code></pre> <p>En <code>***</code> <code>ssh-add</code> nos pide la passphrase de la clave. Ok, probemos entrar al servidor:</p> <pre><code>mdione@cobra:~&#036; ssh beetroot.except.com.ar Last login: Fri Sep 19 20:58:57 2008 from 200.69.231.1 mdione@beetroot:~&#036; </code></pre> <p>No pidió la passphrase, que es lo que queríamos.</p> <p>Las passphrases quedan en el <code>ssh-agent</code> por un período determinado de tiempo. Por defecto duran para siempre, pero con <code>ssh-add -t &lt;segundos&gt;</code> podemos cambiar eso. También podemos borrar una identidad con <code>ssh -d &lt;clave privada&gt;</code> o todas las identidades con <code>ssh-add -D</code> (que molesta costumbre de estas herramientas que tienen nombre de creación pero con algunas opciones de destrucción; <code>ssh-keygen</code> tiene una opción <code>-R</code> que no sólo borra claves, sino que lo hace sobre el <code>.ssh/known-hosts</code>, cuando el comando por sí solo actúa en los pares de claves).</p> <p>En otro post mostraré cómo sacar identidades de un agent y ponerlo en otro.</p> <p><span class="selflink">utils</span> <a href="http://grulicueva.homelinux.net/~mdione/glob//tags/utils/../security/">security</a></p>