22 marzo 2015 a las 23:06
Objetivo: controlar una máquina con Ubuntu a través de ssh/vnc con distintos niveles de acceso, distintos canales de visualización y seguridad elevada con claves públicas/privadas.
Esto funcionará únicamente luego de configurar la máquina anfitrión. Sustituye siempre [usuario] y xx con los valores que apliquen en tu caso:
- Comando desde la misma red local:
ssh -L 5901:localhost:5901 [usuario]@192.168.1.xx -p xx - Comando desde fuera de la red local (requiere que el anfitrión esté conectado a un ruteador que permita la salida vnc por IP global), la dirección IP es variable:
ssh -L 5901:localhost:5901 [usuario]@IPGLOBAL -p xx
Con base en lo anterior, generé el siguiente script que automatiza la elección de la dirección a la cuál conectarse:
#!/bin/bash
#Script que automatiza la elección de métodos de conexión a un servidor
#casero comparando su IP con la de este equipo.
GETMYWANIP=$(curl -s "http://myexternalip.com/raw")
SAVEDWANIP=$(cat ~/wanip.txt)
SCIP=$(cat ~/Sync/Consultas/ip.txt)
# Comparar el dato obtenido con el almacenado y actualizar el almacenado si
# son diferentes:
if [[ $SAVEDWANIP != $GETMYWANIP ]]; then
# Borrar la última versión del archivo donde se recibe el dato:
rm ~/wanip.txt
# Guardar el dato obtenido en crudo:
echo $GETMYWANIP >> ~/wanip.txt
# Mostrar mi IP actual:
echo "La dirección IP de este equipo ahora es:" && echo $GETMYWANIP
# Mostrar la dirección del servidor casero:
echo "La dirección IP del servidor casero es:" && echo $SCIP
else
# Mostrar la IP almacenada ya que no ha cambiado:
echo "La dirección IP de este equipo sigue siendo:" && echo $SAVEDWANIP
# Mostrar la dirección del servidor casero:
echo "La dirección IP del servidor casero es:" && echo $SCIP
fi
# Comparar la IP global del servidor con la de este equipo:
if [[ $SCIP = $GETMYWANIP ]]; then
# Si son iguales, conectar al servidor casero mediante IP local:
ssh -L 5901:localhost:5901 [usuario]@192.168.1.xx -p xx
else
# Si las direcciones IP gloables del servidor y de este equipo son distintas,
# contectar a la IP global del servidor:
ssh -L 5901:localhost:5901 [usuario]@$SCIP -p xx
fiY el siguiente lanzador para iniciar el script desde interfaz gráfica:
~/.local/share/applications/Servidor en casa.desktop
[Desktop Entry]
Name=Servidor en casa
Comment=Conecta al servidor doméstico vía SSH
GenericName=Servidor doméstico SSH
Exec=/home/[usuario]/.local/bin/ssh_servidor_casa
Icon=network-server
Terminal=true
StartupNotify=false
Type=Application
Categories=Network;
Para que el script funcione por primera vez es necesario:
- Haber configurado la sincronización entre el servidor casero y la máquina que accederá a él, mediante Syncthing
- Que el servidor casero ejecute periódicamente el script para Informar cambio de dirección IP.
- Crear el archivo
~/wanip.txtcon cualquier contenido (un caracter basta) en la primera línea.