La identificación por clave pública, una vez que la descubres, es una bendición. Exportas tu clave al servidor remoto y te olvidas de teclear la contraseña. Además de dicha comodidad, es la única forma de trabajar si tienes procesos automáticos que se conectan a servidores remotos (y no quieres tener la contraseña por ahí a la vista en un fichero).

Como decía, cuando le coges el aire ya no puedes parar, y el siguiente paso lógico es usar dicho esquema para conectarte a varios servidores.  Lo primero que se nos ocurre es usar la misma identidad para todos los servidores a los que nos vayamos a conectar. Pero eso no siempre es posible ni deseable.

Así que hay que decirle a SSH de alguna manera qué identidad ha de usar para cada servidor. Y lo haremos así, usando el fichero ~/.ssh/config (si no existe, hay que crearlo):

Host SERVIDOR

IdentityFile ~/.ssh/FICHERO_CLAVE_PRIVADA

User USUARIO

Donde:

  • SERVIDOR es la máquina a la que pretendemos conectar.
  • FICHERO_CLAVE_PRIVADA es el fichero de claves que hay que usar como identidad.
  • USUARIO es nuestro usuario en el sistema remoto (que no tiene por qué coincidir con el usuario local.

Podemos usar wildcards para hacer referencia a dominios completos, por ejemplo, si como SERVIDOR introducimos *.dominio.com, podremos conectar con la misma identidad a host1.dominio.com, host2.dominio.com, etc.

Lo anteriormente expuesto ha sido probado tanto en Linux como en OS X. Supongo que los clientes SSH de Windows permitirán una configuración semejante.

Referencia (donde encontraremos algún truquillo más sobre el uso de SSH): http://www.evilsoft.org/2009/10/23/stupid-ssh-config-tricks

Imagen obtenida de la web redmondpie.com.