21 de abril de 2016

Usando SSH en Mac OS X

Conectarse a un servidor remoto usando una cuenta SSH desde una Mac con OS X sin usar contraseñas (password).

Un uso cómodo de SSH, evitando el ingreso de la contraseña password de una cuenta SSH, es a través de una llave digital o identidad digital, pero para compartir la parte pública de esta llave no viene un comando directo en Mac.

Una conexión SSH es un modo conveniente y seguro de conectarse con un servidor remoto. Para ello necesitamos de una cuenta SSH en el servidor remoto, el acceso a esta cuenta se efectúa por un proceso de autenticación convencional (establecer identidad):

  • Ingresando un nombre de usuario user_name.
  • Y su clave password correspondiente.

Sin embargo, hay un modo más eficiente de gestionar el acceso a la cuenta SSH y esta es por medio de una identidad digital o firma electrónica.

En este artículo veremos como gestionar una cuenta SSH en la plataforma Mac OS X, que es bastante similar a Ubuntu.

Generando la llave SSH

El primer paso es generar la llave o identidad digital en nuestro Mac, en el caso que no dispongamos de ella.
Una opción es generar la identidad digital usando el comando:

ssh-keygen

Esto creará un par de llaves de tipo RSA (manejado por la NSA de Estados Unidos), aunque si usted quiere mayor seguridad, tiene la opción de usar una generación de llaves tipo DSA, con el comando:

ssh-keygen -t dsa

Las llaves generadas se almacenan en la raiz del directorio de usuario: ~/.ssh/, donde se crean dos (2) archivos, en el caso RSA, estos serán: id_rsa y id_rsa.pud. La llave pública corresponde al archivo id_rsa.pub.

Usando la llave pública en Servidores de Confianza

Ahora debieramos volcar la llave pública en el servidor remoto, esto lo podriamos hacer capturando el contenido del archivo y pasarlo al servidor, y además conocer el lugar dentro del servidor donde colocar ese archivo, naturalmente sin cometer errores.

Sin embargo, hay un modo mucho más simple de efectuar la operación de compartir nuestra llave pública y es usando un sólo comando, el comando ssh-copy-id. Lamentablemente, este comando no viene instalado por defecto en Mac OS X y tendríamos que seguir usando la instrucción:

ssh user@IP_server

Y acto seguido, se nos solicitaría la password, esto casa vez que iniciemos la sessión SSH desde consola.

Afortunamente si usamos Homebrew, lo tenemos todo resuelto en una forma simple, pues con Homebrew podemos instalar el comando ssh-copy-id digitando en la consola:

brew install ssh-copy-id

Homebrew instalará el comando en el directorio:/usr/local/Cellar/ssh-copy-id/

Ahora sencillamente el instalar nuestra llave pública con el servidor remoto, se reduce a ejecutar la orden:

ssh-copy-id user@IP_server

Si no deseamos usar nuestra identidad por default, sino otra, entonces necesitamos usar la instrucción: ssh-copy-id -i {identity_file} user@IP_server.
Si se usa un puerto distinto al 22 en la conexión, en esa situación para instalar nuestra llave pública en el servidor debemos usar: ssh-copy-id user@IP_server 'user@IP_server -p {port_number}.

Hacer la operación antes descrita, tiene beneficios a la hora usar comandos que son dependientes de una sesión SSH, como lo son: Scp, sFTP y Rsync. En especial, si usamos la versión de Rsync que nos presenta PHING, ya que no necesitaríamos anteder o estar pendiente de la ejecución de una rutina PHING donde se use Rsync, pues la idea es mantener los ejecuciones automáticas y desatendidas.

Enlaces de interés