A learning journey

pollirrata.com

Crear una llave pública de OpenSSH para una VM Ubuntu en Azure usando macOS

Cuando se crea una nueva máquina virtual en Windows Azure, tienes la opción de asignar una contraseña o usar una llave pública de SSH como tipo de autenticación.

Creating a new VM

Aunque normalmente estamos acostumbrados a usar contraseñas, sin importar que tan complejas sean, en muchos casos son compartidas con otras personas, adivinadas, escritas en post-its, etc., invalidando las medidas de seguridad que intentaban establecer.


En macOS, pedes crear una llave pública de OpenSSH para evitar usar contraseñas al autenticarte al servidor. Empecemos ejecutando

ssh-keygen -t rsa -b 2048 -f ~/.ssh/[server_name]_rsa -N [key_password] -C "sshkey for [user]@[server]"

teniendo:

  • -t: El tipo de llave a generar (En macOS Sierra el default es RSA para SSH 2)
  • -b: número de bits (2048 es el mínimo requerido por Azure)
  • -f: Nombre de archivo de la llave. Normalmente yo uso el formato [server_name]_rsa
  • -N: Passphrase para encriptar la llave privada
  • -C: Un comentario (se agrega al final del archivo de la llave pública)

Esto crea dos archivos: [server_name]_rsa para la llave privada y [server_name]_rsa.pub para la pública.

Dado que la llave pública está en formato SSH2, necesitamos ahora convertirla al tipo OpenSSH que Azure require. Para esto se necesita ejecutar

ssh-keygen -e -f [server_name]_rsa.pub

Se imprimirá algo como esto

—- BEGIN SSH2 PUBLIC KEY —-
Comment: “2048-bit RSA, converted by you@yourbox”
AAAAB3NzaC1yc2EAAAADAQABAAABAQDo76zT++p20c6FEqTkHqsP7T1R0TbwpT495ErJot
9gu7777j6vV/Kk3O46Hz6IjTcABgTKEysmdF8cK2LjGu4YhoZ8z35FdP87azb+yN+JejXl
zlB9999i1Bt+evfhlwQ6nZB9fE2cXtJ8RdsLaon7c+54j3wzpqxAx/zwgmV9999taxNfCq
8XicZUlUHhVYfX0p39DgmREGLuQmecDQ1fO/xYZ7vy6uc3OaOjwCyBS9vsST8jpaq6dmUO
GFJA+COjkDW7qPyLi4444lUVHVXuqrF2+yIcO75555H5bNikpWkSkKZ9iFlzr/QK8C5Ke6
/Imc8281UTl+tre5841Sml
—- END SSH2 PUBLIC KEY —-

Copia y pégalo en el campo “SSH public key” y continúa con el proceso de creación de la máquina virtual. Una vez que ha sido creada, puedes encontrar la dirección IP pública en la sección “Overview”. Es lo último que se necesita para poder conectarte usando SSH, ejecutando

ssh -i ~/.ssh/[server_name]_rsa user@server_ip_or_name

Si quisieras usar el nombre especificado para el servidor, es necesario agregarlo al archivo de hosts.

Bonus Track

En caso de que no se quiera especificar el archivo de la llave cada vez, edita el archivo ~/.ssh/config y agrega una sección

Host [nickname]
HostName [ip_or_servername]
IdentityFile ~/.ssh/[server_name]_rsa
User [username]

Ahora puede usarse el nickname

ssh [nickname]

Y si no se quiere especificar el passphrase, se puede agregar al SSH agent ejecutando

ssh-add -K ~/.ssh/[server_name]_rsa[:en]Cuando se crea una nueva máquina virtual en Windows Azure, tienes la opción de asignar una contraseña o usar una llave pública de SSH como tipo de autenticación.

Creating a new VM

Aunque normalmente estamos acostumbrados a usar contraseñas, sin importar que tan complejas sean, en muchos casos son compartidas con otras personas, adivinadas, escritas en post-its, etc., invalidando las medidas de seguridad que intentaban establecer.


En macOS, pedes crear una llave pública de OpenSSH para evitar usar contraseñas al autenticarte al servidor. Empecemos ejecutando

ssh-keygen -t rsa -b 2048 -f ~/.ssh/[server_name]_rsa -N [key_password] -C "sshkey for [user]@[server]"

teniendo:

  • -t: El tipo de llave a generar (En macOS Sierra el default es RSA para SSH 2)
  • -b: número de bits (2048 es el mínimo requerido por Azure)
  • -f: Nombre de archivo de la llave. Normalmente yo uso el formato [server_name]_rsa
  • -N: Passphrase para encriptar la llave privada
  • -C: Un comentario (se agrega al final del archivo de la llave pública)

Esto crea dos archivos: [server_name]_rsa para la llave privada y [server_name]_rsa.pub para la pública.

Dado que la llave pública está en formato SSH2, necesitamos ahora convertirla al tipo OpenSSH que Azure require. Para esto se necesita ejecutar

ssh-keygen -e -f [server_name]_rsa.pub

Se imprimirá algo como esto

—- BEGIN SSH2 PUBLIC KEY —-
Comment: “2048-bit RSA, converted by you@yourbox”
AAAAB3NzaC1yc2EAAAADAQABAAABAQDo76zT++p20c6FEqTkHqsP7T1R0TbwpT495ErJot
9gu7777j6vV/Kk3O46Hz6IjTcABgTKEysmdF8cK2LjGu4YhoZ8z35FdP87azb+yN+JejXl
zlB9999i1Bt+evfhlwQ6nZB9fE2cXtJ8RdsLaon7c+54j3wzpqxAx/zwgmV9999taxNfCq
8XicZUlUHhVYfX0p39DgmREGLuQmecDQ1fO/xYZ7vy6uc3OaOjwCyBS9vsST8jpaq6dmUO
GFJA+COjkDW7qPyLi4444lUVHVXuqrF2+yIcO75555H5bNikpWkSkKZ9iFlzr/QK8C5Ke6
/Imc8281UTl+tre5841Sml
—- END SSH2 PUBLIC KEY —-

Copia y pégalo en el campo “SSH public key” y continúa con el proceso de creación de la máquina virtual. Una vez que ha sido creada, puedes encontrar la dirección IP pública en la sección “Overview”. Es lo último que se necesita para poder conectarte usando SSH, ejecutando

ssh -i ~/.ssh/[server_name]_rsa user@server_ip_or_name

Si quisieras usar el nombre especificado para el servidor, es necesario agregarlo al archivo de hosts.

Bonus Track

En caso de que no se quiera especificar el archivo de la llave cada vez, edita el archivo ~/.ssh/config y agrega una sección

Host [nickname]
HostName [ip_or_servername]
IdentityFile ~/.ssh/[server_name]_rsa
User [username]

Ahora puede usarse el nickname

ssh [nickname]

Y si no se quiere especificar el passphrase, se puede agregar al SSH agent ejecutando

ssh-add -K ~/.ssh/[server_name]_rsa

Leave a Reply

Your email address will not be published. Required fields are marked *