2. Acceso remoto (SSH)¶
2.1. ¿De qué va este tema?¶
Se trata de administrar un servidor de forma remota usando una consola segura. Es decir, resolver las siguientes cuestiones:
¿Cómo me conecto de forma segura a un equipo remoto?
¿Cómo ejecuto comandos de forma remota?
¿Cómo administro diferentes equipos, desde uno solo?
2.2. Clases¶
Le dedicaremos unas 8 sesiones de clase.
2.2.1. La Consola Remota (SSH)¶
Consolas seguras: Secure Shell (SSH)
telnet -> r-commands -> ssh(1)
Estándar Aplicación (L7). Criptografía asimétrica
Suite completa ( OpenSSH ) para tener un canal seguro: protocolo + servicio + comando:
Consola Segura (ssh) y Servidor de Consolas Seguras (sshd)
Transferencia de Archivos segura (y servidor sFTP)
Gestión de claves y agente de usuario
… y más (túneles, vpn, etc).
Credenciales: Necesitas una IP y acceso de administración (root)
Acceso Seguro: conectividad usando ssh
Actividad. Trabajo en consola
Es necesario revisar el Repaso de Consola Unix y poder ejecutar comandos en una consola (ideal si es remota). Si no tienes una máquina (física o virtual) usa la Shell de Google (ssh vía web).
2.2.2. Configuración de SSH¶
Comprueba que está instalado (suele estar de forma predeterminada)
Comprobar que funciona (systemctl) y quien lo usa (logs)
Revisa la configuración del servicio
Del cliente: ssh_config(5)
Del servidor: sshd_config(5)
Permite una configuración avanzada del servicio, por ejemplo:
Quien puede (y quien no) acceder
Qué tipo de sistema utilizar (con usuario/contraseña o con claves)
Cambiar el puerto de escucha
Y … muchas cosas más
Actividad. Revisa el servicio SSH de tu máquina
¿En qué archivo está la configuración del servicio?
¿En qué archivo está la configuración de los todos los clientes ssh?
¿En qué archivo está la configuración del usuario root de la máquina?
Crea un usuario de prueba (p.ej user1)
Conéctate a ese usuario (con usuario / contraseña)
Pon un mensaje de bienvenida: «Entrando en la consola ssh»
El usuario root no se podrá conectar vía ssh
Añade la autenticación por claves
Quita la posibilidad de autenticación vía usuario / contraseña (con cuidado)
Cambia el registro de log a DEBUG2
2.2.3. Acceso Seguro (con claves compartidas)¶
Crear Claves (.key y .pub) - ssh-keygen(1)
Intercambia las Claves:
Guarda tu clave privada (archivo .key)
Envía tu clave pública (ideal con extensión .pub)
Revisa el directorio .ssh - ssh_config(5)
Acceso remoto:
En el servidor, añades tu clave pública en $HOME/.ssh/authorized_keys (del usuario en el que quieras entrar remotamente)
Usando tu clave privada
Usas el comando ssh (con la opción -i)
Caso particular con Vagrant ( use ssh instead of vagrant ssh ):
Copiar la configuración ssh de vagrant (vagrant ssh-config)
Carga ese archivo de configuración (ssh -F) o usa un Alias en .ssh/config
Revisa el archivo de configuración ssh (para entender qué hace)
Actividad. Uso de ssh en Vagrant
Supongamos que tienes tu máquina base creada y funcionando (te puedes conectar vía vagrant ssh):
¿Cual es la IP de tu máquina?
¿En qué puerto está escuchando ssh?
¿Qué sistema de autenticación utiliza?
¿Donde está la clave privada?
¿Está protegido con contraseña?
¿Podrias utilizar tus propias claves?
¿Cómo lo harías?
Actividad. Conéctate vía ssh usando claves (público/privadas)
Crea dos Claves compartidas:
Una que se llame (mi_clave)
Otra que se llame (mi_clave_root)
¿Puedes ver cual es la clave privada y cual la pública? Ojo que las dos son de la misma clave asimétrica.
Conéctate a user1 sin utilizar contraseña (con las claves mi_clave):
Crea tu clave pública y privada
Haz una copia de seguridad
Accede de forma remota
Conéctate a root sin utilizar contraseña (con las claves mi_clave_root):
Revisa la configuración de SSHD (que acepte root)
Crea las claves e intercámbialas
Accede de forma remota
2.2.4. Configuración cliente ssh¶
En el archivo $HOME/.ssh/config -> ssh_config(5)
Crear alias de conexión. Por ejemplo ssh u1 debe conectarme automáticamente a la máquina remota en el usuario user1
Ejecutar comandos en remoto (con ssh). Simplemente añadir el comando (o comandos o script).
Actividad. Conéctate vía ssh usando claves (público/privadas)
Crea un alias de conexión para una máquina y un usuario. Por ejemplo te conectas poniendo ssh mi_maquina.
¿Puedes ver los archivos que hay en /home?, sin conectarte
¿Puedes ver los procesos que se ejecutan en el sistema remoto?
¿Puedes ejecutar un script en remoto?
¿Puedes mostrar las últimas 10 líneas del log?
2.2.5. Usar Múltiples Llaves¶
Hay diferentes escenarios:
Con la misma clave en diferentes máquinas
Con la misma clave en la misma máquina (y diferentes usuarios)
Con la un par de claves por usuario y máquina
El tuyo: escoge el que te convenga (según nivel de responsabilidad y acceso)
Ideal: pocas y bien gestionadas (y con copia de seguridad).
Uso de un Agente de Usuario - ssh-agent(1)
¿Qué es? Un software que gestiona las claves creando …
Variables de Entorno en tu consola (revisa env(1))
Uso de múltiples Claves - ssh-add(1)
Cargar Claves
Listar Claves
Borrar Claves
Actividad. Usa múltiples claves (sin reescribirlas continuamente)
Lanza el agente de usuario
¿Cuales son las variables de entorno asociadas?
Carga al menos dos claves en el sistema
¿Cómo usarías las claves para conectarte a un servidor remoto?
¿Qué claves tienes cargadas?
Borra todas las claves
¿Cómo lanzo el agente de usuario al conectarme?