SSH

De Wikiunix

Format.png Formatear
Esta página necesita ser editada para cumplir los requisitos del wiki.
Alert.png To Do
Esta página necesita ser completada.
Puedes revisar todas las páginas por completar en este enlace.


SSH es un protocolo estándar para el acceso a máquinas remotas de manera segura. Permite el acceso a una terminal remota de una máquina, a una aplicación gráfica remota utilizando el parámetro -X y al establecimiento de "túneles" seguros entre máquinas.

Contenido

Configuración básica del servidor y cliente SSH

Del lado del servidor

  • Instalar el paquete de nuestra distribución o compilar el programa.
apt-get install openssh-server
  • Al instalarse se genera una clave RSA que identificara a la máquina (ficheros /etc/ssh/ssh_host_{d,r}sa_key.pub). Cuando máquinas cliente intenten acceder a ésta, un dialogo les preguntará si se debe añadir la clave al fichero de claves conocidas (fichero known_hosts).
  • Editar el fichero /etc/ssh/sshd_config:
Algunas opciones de sshd_config
Opción Descripción
Port Puerto por el que escuchará el servidor.
PermitRootLogin [yes/no] Establece si se permitirá acceder mediante usuario root.
PasswordAuthentication [yes/no] Establece si se permitirá acceder mediante contraseña. SSH permite el acceso mediante clave pública.
MaxSessions Número de sesiones SSH que se permiten.
  • Una vez configurado levanta el servicio:
upstart:
start ssh
init:
/etc/init.d/ssh start


Del lado del cliente

apt-get install openssh-client

Hay una configuración de cliente global en /etc/ssh/ssh_config, puedes ver los parámetros de configuración en el manual.

Adicionalmente, cada usuario, tiene en su directorio casa dentro de .ssh un fichero ~/.ssh/config que determina la configuración de cliente para ese usuario.

Otros ficheros dentro del directorio .ssh

  • ~/.ssh/known_hosts fichero que almacena las máquinas conocidas de ese usuario.
  • ~/.ssh/authorized_keys fichero dónde se listan las claves públicas que tienen acceso a ésta máquina y usuario.
  • ~/.ssh/is_{d,r}sa.pub clave pública del usuario generada mediante ssh-keygen.

Ejemplos de uso

Acceder a una terminal mediante ssh

ssh usuario@maquina

Ejecutar un comando remoto mediante ssh

ssh usuario@maquina 'ejecución remota'

Generar clave pública utilizando ssh-keygen

Se puede invocar sin parámetros. Obteniendo una salida como la siguiente:

~$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): another 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in another.
Your public key has been saved in another.pub.
The key fingerprint is:
38:1e:dc:d1:54:7c:03:5b:af:ed:39:ce:2f:99:55:74 mort@Canadan
The key's randomart image is:
+--[ RSA 2048]----+
|          .oo..  |
|         o  .oo.E|
|        . . .. oo|
|     . o .     o.|
|      = S     . o|
|     . o       .o|
|      .        *.|
|              * .|
|               +o|
+-----------------+

Con los parámetros por defecto ssh-keygen generará una clave RSA, puede modificarse con el parámetro -t el tipo de clave a generar. En el ejemplo expuesto creará dos ficheros another y another.pub. Donde another es la clave privada y es un fichero que sólo debería poder ser leido por el usuario. Y another.pub que es la clave pública que transmitiremos a otras máquinas a las que queramos acceder remotamente.

Archivo: another.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1uM4KAvNE2usXmVDeg3z071581UQhJm6U48BQaJ5nijSUrGBNMUFWn6ZX3BB0QNWVN2m18Uv8r+DQqkTor7VZTFIxwFKln8jswVPneXwu5OYmjVq9EoLwDhd2BxIuzWPYZEO76mIqBkiZ/Hiut438bkiLPdm/0G41bXW0sDbZhpyqWukZwh3w53dopvmqjurbPIJ84N8gSv5QSwzZ8SYxKUDiU88buyiE4ME9JNLSGhx5P27UU56MPDV37OHwfN456KR3UKSy7AAzRAwN6YA2sNufwXT+R9PLhxLtDvm4xm/A8QjI2ltrcv1gt3ezOlEZg6YwhpRvzkH2kkiy0kViw== usuario@maquina


El comentario (en éste caso usuario@maquina) no es importante sólo sirve para identificar para que se usará la clave pública, puede modificarse con el parámetro -c de ssh-keygen, por defecto se toma el usuario@host del sistema.

Acceder a una máquina mediante clave pública

Para conseguirlo tenemos que seguir los siguientes pasos:

  • añadir nuestra clave pública en el fichero authorized_keys de la máquina a la que queramos acceder. Si tenemos acceso a la máquina vía SSH mediante autenticación de usuario/contraseña podemos hacerlo nosotros mismos, sino tendremos que contactar con el administrador de la máquina.
  • acceder ssh usuario@maquina

Acceder a una terminal con capacidad para lanzar una aplicación gráfica mediante ssh

ssh -X usuario@maquina

Otros servicios sobre ssh

  • scp: realiza copias de archivos en red de manera segura.
  • sftp: transferencia de ficheros de manera segura.
  • tunelización.
Herramientas personales