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.
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.
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