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
Crea una máquina Linux:
Debian GNU/LinuxLinux Debian
2 GB RAM
20 GB DD
Conéctate vía ssh y comprueba que tienes permisos de admininistración
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¶
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
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).
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.
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¶
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
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).
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
Con acceso root para instalación de servicios en puertos privilegiados
> sudo su -
Y ya debería como root
Tareas en el Servidor¶
¿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.
¿Cual es la ruta (hops) desde tu máquina actual hasta el servidor?
> traceroute cesareo.freeddns.org
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
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
Configura tu terminal para que te diga las últimas conexiones a tu servidor remoto
> echo "lastlog" >> $HOME/.profile
Ejecuta un comando en remoto, sin conectarte al terminal
> ssh mi_maquina "ls"
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.