<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rodolfo Pilas &#187; administración</title>
	<atom:link href="http://www.pilas.net/tag/administracion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pilas.net</link>
	<description>Rio Pilas</description>
	<lastBuildDate>Fri, 03 Sep 2010 21:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Automatizando SSH</title>
		<link>http://www.pilas.net/20100202/automatizando-ssh/</link>
		<comments>http://www.pilas.net/20100202/automatizando-ssh/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 14:37:07 +0000</pubDate>
		<dc:creator>rodolfo</dc:creator>
				<category><![CDATA[Scripts]]></category>
		<category><![CDATA[administración]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://www.pilas.net/?p=727</guid>
		<description><![CDATA[Algnas veces me ha tocado escriir líneas de ssh bastante complejas, como por ejemplo: ssh -1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no 192.134.27.24 que realmente terminan siendo un incordio, cuando esa conexión debe ser vuelta a realizar para repetir tareas de administración remota. Entonces, este artículo es un resúmen de algunos trucos de [...]]]></description>
			<content:encoded><![CDATA[<p>Algnas veces me ha tocado escriir líneas de ssh bastante complejas, como por ejemplo:</p>
<p><code>ssh -1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no 192.134.27.24</code></p>
<p>que realmente terminan siendo un incordio, cuando esa conexión debe ser vuelta a realizar para repetir tareas de administración remota. Entonces, este artículo es un resúmen de algunos trucos de automatización que he logrado aprender hasta ahora, para hacer mi ssh más fácil y mi vida también.</p>
<h2>1. el nombre</h2>
<p>Escribir la IP 192.134.27.24 cada vez que me conecto es antidiluviano y no escala a IPv6. Así que lo ideal es disponer de un DNS bien configurado al cuál recurrir.  </p>
<p>Lamentablemente en redes internas he visto que asignan nombres a las máquinas que resultan más difíciles que la dirección IPv4 misma, por ejemplo: <code>sssd2p1r3db.sss.com</code>, que significa <code>sss</code> es el nombre de la empresa, datacenter 2, piso 1, rack 3, <code>db</code> pues es el server de base de datos.  Fantástico!  Cómo no recordarlo?  Claro, despues uno ve que terminan usando la IP.</p>
<p>Así que llamemos a nuestro servidor 192.134.27.24 <code>sssd2p1r3db</code> como <strong>&#8220;tito&#8221;</strong> (o cualquier otro nombre que me resulte fácil de recordar)</p>
<p>Para que funcione el ssh a tito debo llegar a la IP.  Y esta tarea de <em>personalización</em> de los nombres en la red la hace el archivo <code>/etc/hosts</code>.  Edito el archivo y agrego:</p>
<blockquote><p>
# Servidor sssd2p3r3db<br />
192.134.27.24  tito
</p></blockquote>
<p>A partir de ahora, todo lo que yo haga a nivel de red con el nombre &#8220;tito&#8221; va a funcionar desde <code>ssh tito</code>, <code>ping tito</code>, hasta <code>http://tito</code> en el Firefox.</p>
<h2>2. las opciones ssh</h2>
<p>Las opciones del ssh que son necesarias para esta conexión de ejemplo son: <code>-1 -p 23 -l root -i /etc/ssh/key01 -o CheckHostIP=no</code>, que no es necesario explicar su significado, pues todas estas opciones están a un man de distancia.</p>
<p>El archivo que permite automatizar todo esto para todos los usuarios es <code>/etc/ssh/ssh_config</code> y para un usuario en específico es el archivo <code>$HOME/.ssh/config</code>.  Edito el archivo y creo una entrada Host acorde a mis necesidades:</p>
<blockquote><p>
Host tito<br />
   Protocol 1<br />
   Port 23<br />
   User root<br />
   IdentityFile /etc/ssh/key01<br />
   CheckHostIP no
</p></blockquote>
<p>Y ya está!</p>
<p>Ahora puedo escribir <code>ssh tito</code> y mi conexión va a ser realizada exactamente como si escribiera toda la linea del principio. </p>
<p>Solo una aclaración:  la sentencia Host funciona por string, es decir que si escribo <code>ssh 192.134.27.24</code> no va a producir el mismo efecto de levantar los datos del ssh_config, aunque me esté conectando al mismo servidor. </p>
<h2>3. Bash completion</h2>
<p>Y por último, hacer que mi Bash permita usar tabulador para los nombres caprichozos y fáciles que he colocado a mis servidores&#8230; porque?, a ver: nadie pretende que me acuerde que el server se llama &#8220;tito&#8221;, es mucho más acordarme que empieza con &#8220;t&#8221; y sigue con &#8220;algo&#8221; <img src='http://www.pilas.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Edito <code>~/.bashrc</code> y agrego:</p>
<blockquote><p>
_completossh ()<br />
{<br />
  actual=${COMP_WORDS[COMP_CWORD]};<br />
  COMPREPLY=($(compgen -W &#8216;$(cat /etc/ssh/config | grep &#8220;^Host\b&#8221; &#8211; | sed -e &#8220;s/Host //&#8221;)&#8217; &#8212; $actual))<br />
}<br />
complete -F _completossh ssh
</p></blockquote>
<p>Y ahora puedo escribir <code>ssh t</code> + tabulador, y me completará &#8220;tito&#8221;. Y si tengo más de un servidor que comience con &#8220;t&#8221; pues dar dos veces tabulador y me muestra la lista.</p>
<h2>4. Algunos documentos para leer del tema</h2>
<ul>
<li><a href="http://www.faqs.org/docs/securing/chap15sec121.html">Securing and Optimizing Linux: RedHat Edition -A Hands on Guide, cap. 13</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.pilas.net/20100202/automatizando-ssh/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
