miércoles, 13 de octubre de 2010

Uso de SSH (parte 1)

Tradicionalmente utilizamos telnet para iniciar una sesión en nuestro servidor, sin embargo, este protocolo no cuenta con ningún tipo de seguridad, por lo que basta conectar un analizador de protocolo a la red para averiguar lo que se escribe desde una IP determinada, es por eso que se recomienda utilizar en su lugar el SSH, el cual, esta cifrado y permite iniciar sesiones e intercambiar archivos.

Una de las ventajas de SSH es que permite el uso de llaves públicas para iniciar la sesión sin necesidad de ingresar contraseña siendo, de esta forma, un buen sustituto para el rsh.

Vamos a crear primero una llave RSA para nuestro usuario con el comando ssh-keygen:

hajarami@ubuntu:~$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to. save the key (/home/hajarami/.ssh/id_rsa):
Created directory '/home/hajarami/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hajarami/.ssh/id_rsa.
Your public key has been saved in /home/hajarami/.ssh/id_rsa.pub.
The key fingerprint is:
27:99:0b:f0:bd:98:b9:54:c9:b8:c6:47:08:15:96:ba hajarami@ubuntu
The key's randomart image is:
+--[ RSA 2048]----+
|      +o         |
|     o.          |
|    o.           |
|    .+ = +       |
|     .= S .      |
|    E. O =       |
|      O +        |
|     o o         |
|      .          |
+-----------------+

Esta llave esta compuesta por dos partes la pública y la privada, la privada es el archivo $HOME/.ssh/id_rsa y debe permanecer siempre ahí con solo permisos para el propietario.

Revisamos el contenido de la llave pública:

hajarami@ubuntu:~$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv53P81IpkhJPzzzZ7xygmWq1ynTeJ3ut/XetJPX4fENmo/c1nQlG+tsNzsuAV6OBFa2KI0YT9avxkDOFA+1SaO8dqslo0wF46/CCKyFmUn2NMHlA69NyBKiL2cLxvTXq6fBj3+f9jVijv4df/9NoBpup7uIETJt0MlYVsSbidR1FMdzNO91mcCZkrgQ9rxH4N9geI9KMUEXSfuouhmY0Z8GQUZSIB1f5djub1NfT10F6riPW7njF7HMRHlAIb8EKaGBcgK0LCEFP1OVc9uSLOWIzbz2slvze5Dly31d6O4Rb+T0LeTPL+7FavEaCeUM7lW+WVIs+sGemsEL+h2VQ8Q== hajarami@ubuntu

Esta llave se la vamos a proporcionar al propietario de la cuenta a la que necesitamos entrar para que nos “autorice” el acceso.

En el otro servidor, en el home directory del usuario con el que vamos a iniciar sesión vamos a agregar la llave pública en el archivo $HOME/.ssh/authorized_keys:

[solaris10:~]$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAv53P81IpkhJPzzzZ7xygmWq1ynTeJ3ut/XetJPX4fENmo/c1nQlG+tsNzsuAV6OBFa2KI0YT9avxkDOFA+1SaO8dqslo0wF46/CCKyFmUn2NMHlA69NyBKiL2cLxvTXq6fBj3+f9jVijv4df/9NoBpup7uIETJt0MlYVsSbidR1FMdzNO91mcCZkrgQ9rxH4N9geI9KMUEXSfuouhmY0Z8GQUZSIB1f5djub1NfT10F6riPW7njF7HMRHlAIb8EKaGBcgK0LCEFP1OVc9uSLOWIzbz2slvze5Dly31d6O4Rb+T0LeTPL+7FavEaCeUM7lW+WVIs+sGemsEL+h2VQ8Q== hajarami@ubuntu" >> $HOME/.ssh/authorized_keys

Y listo, ya tenemos autorización para iniciar sesión, desde nuestro servidor origen:

hajarami@ubuntu:~$ ssh hajarami@solaris10
The authenticity of host 'solaris10 (192.168.188.138)' can't be established.
RSA key fingerprint is 88:4d:ff:4c:67:17:46:20:14:9c:3b:7f:1c:5b:f9:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'solaris10,192.168.188.138' (RSA) to the list of known hosts.
Last login: Wed Oct 13 20:13:24 2010 from 192.168.188.1
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
You have mail.
[solaris10:~]$

La primera vez que entramos a un servidor, nos hace la advertencia de que no lo tiene en la lista de servidores conocidos, por lo que nos pide una confirmación, esto es importante ya que, en el caso de que hubiera un reemplazo del servidor la llave del servidor no correspondería y nos devolvería un error, lo normal es que simplemente inicie sesión sin mayor aviso. En la invocación del comando ssh le indicamos el login del usuario del otro servidor, el caracter arroba y el nombre del servidor o su dirección; si el login del usuario remoto es igual al local, no es necesario escribirlo, basta con el nombre del servidor.

Además de iniciar iniciar sesión es posible ejecutar en forma remota un comando de una forma similar a la del comando rsh:

hajarami@ubuntu:~$ ssh hajarami@solaris10 uname -a
SunOS solaris10 5.10 Generic_142901-12 i86pc i386 i86pc

Regularmente es muy sencillo, no es necesario crear una llave para el usuario remoto, en caso de problemas, se puede ejecutar el ssh con el parámetro –v para que muestre mensajes de “cómo va”.

Mañana les muestro cómo utilizar el ssh para enviar y recibir archivos.

No hay comentarios.: