La razón por la que escribo este artículo, es porque acabo de resolver un problema que se tiene con el pasar del tiempo. Cada vez se tiene que administrar más servidores y uno debe recordar mayor números de claves. Si uno usa la misma clave para todos los servidores, entonces se tiene un riesgo de seguridad porque si se rompe la clave en uno, se rompe en todos. Este mini how to es útil también si se desea hacer tareas automatizadas y no quieren que se requiera el uso de contraseña para ssh (ej. sincronización con rsync).
La idea es la siguiente, vamos a crear una clave privada que funcionará como nuestra contraseña para ingresar a los servidores que necesitemos. En cada servidor copiaremos nuestra clave pública y podremos ingresar a ellos. Este sistema, bien utilizado es mucho más seguro que utilizar contraseñas.
Crear el par de claves públicas y privadas:
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Damos enter, para que las llaves se guarden en ~/.ssh
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Aquí ponemos una contraseña para proteger nuestra clave privada. Así que cada vez que vayamos usar la clave privada nos pedirá esta clave. En caso de querer utilizar ssh sin clave, dejar vacío (solo recomendable para tareas automatizadas y teniendo en cuenta los riesgos.)
Your identification has been saved in /yo/.ssh/id_rsa.
Your public key has been saved in /yo/.ssh/id_rsa.pub.
Aquí nos dice el sistema donde ha guardado nuestra clave pública y privada. La cave privada la tenemos que cuidar. Si llega a malas manos podrían ingresar a nuestros servidores (sobre todo si no esta protegida con un passprhase), si la perdemos nosotros no podremos llegar a nuestros servidores. La clave pública la subimos a los servidores donde queremos ingresar.
Copiar clave pública a servidores:
scp ~/.ssh/id_rsa.pub usuario@servidorremoto.com:
cat id_rsa.pub >> .ssh/authorized_keys
ssh usuario@servidorremoto.com
Listo ahora podemos ingresar a servidor remoto utilizando la llave privada. Copiamos nuestra clave pública a todos los servidores que queremos hacer ssh.
Otra opción que yo no conocía, pero me la hizo notar Gerardo Barajas es usar el comando ssh-copy-id.
ssh-copy-id usuario@servidorremotocom
Una observación, no deberías usar -b 1024 ya que estás haciendo que, en versiones de ssh-keygen razonablemente modernas (Debian estable, que ya vendría a ser razonablemente obsoleta ), la clave se genere con menor longitud que el default que en el caso de RSA es 2048 bits. Lo cual, sobre todo si se usa un SSH vulnerable donde el generador de entropía esté afectado, puede resultar en claves SSH razonablemente fáciles de romper por parte de un potencial atacante. El problema no es trivial, las listas de claves RSA de 1024 bits que son vulnerables es conocida:
http://wiki.debian.org/SSLkeys#Testingkeysusingssh-vulnkey
Comentario acogido y corregido en el post. Muchas gracias José Miguel.
Saludos,
Rafael
Como se te ocurre hacer un scp de la clave publica al authorized_keys de otra maquina? Un compañero me preguntó como crear claves publicas y privadas y le dije que buscara en internet, encontró este link y al hacer eso sobrescribió el authorized_keys de un servidor que tenía las claves publicas de toda la empresa con la suya. Te pido por favor que aclares ese punto ya que puede generar más problemas como este. Saludos,
Estimado MaTUb, cambié el how to para que no se cometa ese error.
Saludos,
Rafael
NECESITAN CON URGENCIA TU AYUDA. HOLA NUESTRO NOMBRE ES ANA GOMES Y MI HERMANA VIVIANA GOMES