1. SSH

1.1. Conexión a un servidor por SSH

  • ssh -i ruta/a/llaveprivada usuario@direccion (-p <<puerto>> si el puerto es distinto del 22)
  • Se puede añadir la opcion “-N” para ocultar la sesión (por ejemplo para la redirección de puertos)
  • Para ejecutar un comando en la máquina remota al conectarse, hay que ponerlo al final (puede que sea necesario incluir el comando exit para que termine la conexión)

1.2. Pasos para instalar un servidor SSH con Linux

  1. Instalar openssh-server en el ordenador que hará de servidor
    • NOTA: Una vez instalado se puede acceder al servidor con el usuario y contraseña, sin necesidad de ninguna configuración.
  2. Creación de claves privadas y públicas
    • Con el programa PUTTY
      1. En el cliente, crear llaves con Puttygen (recordar que las claves privadas .ppk pueden no valer para algunas aplicaciones)
      2. Conectarse al servidor por SSH.
      3. en ~/.ssh/authorized_keys del servidor, (si no existe crearlo y chmod 600 authorized_keys) añadir clave pública con el programa Vim (la clave que aparece en la ventana de puttygen, pueden incluirse varias claves públicas en authorized_keys)
    • Con OpenSSH
      1. En el cliente (o el servidor), creamos las claves:
        • mkdir ~/.ssh
        • chmod 700 ~/.ssh
        • ssh-keygen -t rsa (en windows ssh-keygen)
        • (No hace falta escribir nada, dar Intro a todo)
        • (las claves se guardan en .ssh, no mover la clave privada para no tener que indicar su ubicación al conectarnos al servidor)
      2. en ~/.ssh/authorized_keys del servidor, chmod 600 authorized_keys, añadir clave pública con el programa Vim (el contenido del archivo .pub, pueden incluirse varias claves públicas en authorized_keys. A veces según el formato de la llave pública, puede no funcionar)
  3. Configuración del archivo /etc/ssh/sshd_config del servidor
    • Port 22 (es muy recomendable cambiar el puerto por defecto)
    • Password Authentication no (para acceder solo con la llave privada, yespermite acceder con contraseña o con clave privada)
    • PermitRootLogin no (evita que el usuario root acceda directamente por SSH)
  4. Reiniciar el servidor SSH
    • sudo service ssh reload

Nota PUTTY: Si los editores de texto de línea de comandos (nano, vim) dan problemas con el “numpad”: En los ajustes de Putty: Terminal->Features y activa "Disable application keypad mode". Recuerda guardar las preferencias.

1.3. Convertir entre formatos de claves privadas

  • Con el programa PuttyGen puede convertirse una clave salida del comando ssh-keygen a un archivo .ppk

1.4. Pasos para instalar un servidor SSH con Windows

  • Con el programa Bitvise SSH Server
    1. Descargar llaves pública y privada en Manage host keys
    2. Crear cuenta local de windows e incluir la llave pública (Open easy settings)
    3. En Edit Advanced Settings -> Windows Accounts -> Edit seleccionar como Required la autentificación por contraseña y por llave pública
    4. Conectarse al servidor con la llave privada
    5. Para que el servidor se inicie automáticamente, programar que el servicio BVSshServer.exe se inicie al iniciar el sistema

1.5. Conexión fuera de la red local

  • En el router al que se conecta el servidor, redirigir el puerto 22 o el que use el servidor a la dirección IP local de éste.
  • En Windows puede ser necesario abrir el puerto en el Firewall

1.6. Transferencia de archivos por SCP (línea de comandos)

  • Transferir del servidor al cliente
    scp -i llaveprivada -P (puerto distinto del 22) -r usuario@direccion:archivo /ruta/local/
  • Transferir del cliente al servidor
    scp archivolocal -i llaveprivada -P (puerto distinto del 22) usuario@direccion:/ruta/local
  • Particularidades con un servidor Windows
    sudo scp -i llaveprivada -P (puerto distinto del 22) usuario@direccion:xampp\htdocs\index.php /var/www/html/

1.7. Redirección de puertos a través de SSH

  • Sirve para poder usar servicios no encriptados (p. ej. VNC) a través de SSH, beneficiándonos de su encriptación
    ssh -i llaveprivada -L puertolocal:127.0.0.1:puertoremoto usuario@direccion
  • Tipos de redirección:
    • Remoto: cuando en el servidor se hace referencia a si mismo (127.0.0.1) se hace un redireccionamiento a la ip local del cliente indicada, a través del puerto especificado.
    • Local: Cuando en el cliente se hace referencia a si mismo (127.0.0.1) se redirecciona al servidor, a través del puerto especificado.