Acceder a un servidor remoto

Práctica Completa

Esta es la práctica final del tema Acceso remoto (SSH).

Provisionar una máquina Servidor

Objetivo: Tener una IP a la que conectarte, y las credenciales de acceso (usuario y contraseña con permisos de administración)

Usando virtualización en local

Por ejemplo usando Vagrant

  1. Crea una máquina Linux:

    1. Debian GNU/LinuxLinux Debian

    2. 2 GB RAM

    3. 20 GB DD

  2. Conéctate vía ssh y comprueba que tienes permisos de admininistración

  3. Actualiza el sistema (y desconéctate)

En este punto ya tienes tu sistema base instalado y listo para trabajar con él. Comprueba la conectividad

> ping <IP Privada> (desde tu máquina o tu red privada).

Usando proveedor Cloud

  1. Crea tu máquina remota (instancia VM)

    Depende del proveedor, pero tendrás que seleccionar CPU, RAM, Disco y S.O. Lo que recomiendo es: Linux Debian / 2 GB RAM / 20 GB DD SSD. La CPU no importa mucho . Al final haremos lo mismo con máquina Windows ( en consola siempre).

    Se hace de forma gráfica

  2. Arranca la instancia y comprueba la dirección pública

    La instancia se gestiona de forma gráfica usando el panel de control que te de el proveedor de tu servicio. La <IP Pública> la ves en tu panel de control (puede ir cambiando)

> ping <IP Pública> (desde   cualquier máquina).
  1. Registra un subdominio (p.ej. vía Dynu.com ) en esa IP Pública. Por ejemplo tunombre.freeddns.org

    Asígnale un nombre y subdominio a tu ip pública. Lo compruebas haciendo un ping. Uso cesareo.freeddns.org como <host> en todos los ejemplos. Tendrás que probar con el nombre de tu máquina.

> ping cesareo.freeddns.org

Y ya nos olvidamos de usar IPs. Son difíciles de recordar y que además pueden cambiar.

  1. Entrar en la máquina

    Si creas tú la máquina, puedes entrar vía SSH utilizando el panel de control de tu proveedor. En ese caso, el proveedor genera las claves compartidas y tu usario ya habrá sido generado.

    Si te asignan una máquina necesitas que:

    • Te digan con qué usuario vas a entrar

    • Con qué credenciales. Ideal con tu clave pública, o tendrán que darte una clave privada. Lo ideal es que tú les des tu clave pública.

    • Te tienen que dar permisos de root: añadir tu usuario al grupo sudoers.

    Entra en tu instancia y comprueba que tienes acceso como root. Por ejemplo:

> systemctl status

Y te dará información de los servicios en esa máquina.

Automatización de la conexión

  1. Instala tus claves compartidas para poder acceder desde cualquier consola.

    Aunque lo más sencillo es usar la consola SSH desde el panel de control del proveedor, te quita flexibilidad. Por eso prefiero que lo hagais con vuestras claves. De esa manera, siempre que tengas tu clave privada contigo puedes entrar a tu servidor. Y además las creas tú. Y además puedes tener o diferentes claves, o la misma para diferentes servidores. Eso va a hacer tu vida (de administrador) más fácil.

    Para eso tienes que crear un par de claves (ssh-keygen , dándole un nombre) y subir la clave pública al panel de control de tu proveedor cloud (o enviársela a quien te asignó la máquina). Y compruebas que funciona, por ejemplo:

> ssh -i mi_clave mi_usuario@cesareo.freeddns.org
  1. Automatiza tu conexión SSH

    Automatiza tu conexión para no tener que escribir siempre lo mismo, es decir que deberías entrar como:

> ssh mi_maquina

Esta la configuración que tengo en $HOME/.ssh/config y que permite ese acceso rápido. Muy útil.

Host mi_maquina
 HostName cesareo.freeddns.org
 User mi_usuario
 IdentityFile mi_clave

 (donde mi_usuario es por ejemplo cesareo y mi_clave
 /home/cesareo/.ssh/mi_clave.key).
  1. Usa el agente de usuario ssh

    Es otra forma de automatizar. Pero necesita cargar el agente y añadir las claves. Puedes utilizar cualquiera de las dos.

> eval $(ssh-agent)
> ssh-add /home/cesareo/.ssh/mi_clave.key
  1. Con acceso root para instalación de servicios en puertos privilegiados

> sudo su -

Y ya debería como root

Tareas en el Servidor

  1. ¿Qué servicios tiene públicos (puertos abiertos)?

> netstat -l --tcp

Hay varias alternativas, esta te muestra los puertos tcp (--tcp) y  que están "escuchando" (listening) con -l.
  1. ¿Cual es la ruta (hops) desde tu máquina actual hasta el servidor?

> traceroute  cesareo.freeddns.org
  1. Entra al servidor, desde al menos dos máquinas diferentes

Tienes que disponer del archivo (clave privada) mi clave para conectarte.

>  ssh -i mi_clave mi_usuario@cesareo.freeddns.org
  1. Configura tu terminal para que te diga hola cada vez que te conectas

Esto depende del tipo de terminal e intérprete. En el caso de bash

> echo "Hola" >> $HOME/.profile
  1. Configura tu terminal para que te diga las últimas conexiones a tu servidor remoto

> echo "lastlog" >> $HOME/.profile
  1. Ejecuta un comando en remoto, sin conectarte al terminal

> ssh mi_maquina "ls"
  1. Estima el coste mensual por uso

    Depende del proveedor de servicio, tendrá un servicio de facturación donde puedes ver los cargos. Aunque tengas el crédito gratuito, la idea es saber lo que cuesta un servicio de estas características.

    Si te la asignan, el coste lo pagará otra persona.