Skip to content

Herramientas de Conexión Remota y Gestión de Sesiones

A la máquina virtual podemos acceder de dos formas:

  1. Desde la misma máquina virtual.
  2. A través de ssh (debe estar el servicio activo).
Terminal window
# Para comprobar que está activo el servicio, desde la máquina virtual ejecutamos
$ ssh localhost
$ systemctl status ssh # otra manera de comprobarlo
# Si el servicio no está activo lo activamos con (como root)
/sbin/service ssh start
# Para que se inicie siempre que reiniciemos
systemctl enable ssh
# ssh nombre_de_usuario@ip_maquina
$ ssh user@192.168.64.14
# para salir de la conexión ssh (ctrl + d) o el comando
$ exit
# Intenta acceder a la máquina virtual como root
$ ssh root@192.168.64.14

Para realizar los ejercicios vamos a utilizar un contenedor con una debian, anteriormente ya lo hemos utilizado . Como ya tenemos la imagen debian:12 descargada, la creación del contenedor será muy rápida, esta vez, ejecutamos el comando de la siguiente forma:

Terminal window
docker run -it --name debian-ssh -p 22:22 -p 2222:2222 --hostname debianssh debian:12 bash
  • -p 22:22, -p 2222:2222 : mapeamos los puertos, para que la máquina sea accesible por ssh.

Dentro de la máquina:

  1. Instalamos el paquete openssh-serverpara montar un servidor ssh.
  2. Iniciamos el servicio ssh.
  3. Creamos un usuario llamado hadoop.
  4. Nos conectamos desde la terminal al contendor por ssh: ssh hadoop@localhost
1. Modifica la configuración del servidor SSH para que se pueda acceder como root.
2. Modifica lo necesario para que el usuario hadoop que hemos creado pueda acceder al contenedor por ssh SIN CONTRASEÑA, al escribir ssh hadoop@localhost, automáticamente entrará al contenedor.
3. Modifica el puerto del servicio SSH para que escuche por el 2222.
4. Cambia de nuevo el puerto al 22.

Posibles problemas El puerto SSH de tu ordenador ya está siendo utilizado (tienes un servidor ssh en local), se puede solucionar mapeando un nuevo puerto, por ejemplo le 33. En el momento de crear un contendor podemos indicarle que el puerto 33 local, corresponda al puerto 22 en el contenedor. Revisar la opción de mapeo de puertos en docker (-p).

Se utiliza para copiar archivos y directorios de forma segura entre sistemas remotos a través de SSH (Secure Shell). Es especialmente útil para transferir archivos de un sistema local a uno remoto o viceversa de manera segura y eficiente.

Principales opciones:

  • r: Copia directorios y sus contenidos de manera recursiva.
  • P: Especifica el puerto SSH a utilizar.
  • i: Permite especificar un archivo de clave privada en lugar de la clave por defecto.
  • v: Ejecuta scp en modo verbose para obtener información detallada sobre la transferencia.
Terminal window
# Copiar un archivo local a un servidor remoto
scp archivo.txt usuario@servidor.com:/ruta/destino/
# Copiar un archivo remoto a la máquina local
scp usuario@servidor.com:/ruta/archivo-remoto.txt /ruta/local/
# Copiar un directorio y su contenido de manera recursiva
scp -r directorio_local/ usuario@servidor.com:/ruta/destino/

Permite crear sesiones de terminal multiplexadas en sistemas Unix y Linux. Esto significa que puedes iniciar múltiples sesiones de terminal dentro de una sola ventana y alternar entre ellas. Además, las sesiones de screen pueden ejecutarse en segundo plano, lo que permite desacoplarlas de la sesión de terminal actual.

La principal ventaja de screen es que podemos:

  • Conectarnos a un servidor ssh.
  • Ejecutar un proceso largo.
  • Salir del servidor ssh (el proceso continua ejecutándose).
  • Volver a conectar al servidor ssh y recuperar la ejecución anterior.

[!question] Hold a session open on a remote server. Manage multiple windows with a single SSH connection. Start a new screen session: screen

Start a new named screen session: screen -S session_name

Start a new daemon and log the output to screenlog.x: screen -dmLS session_name command

Show open screen sessions: screen -ls

Reattach to an open screen: screen -r session_name

Detach from inside a screen: Ctrl + A, D

Kill the current screen session: Ctrl + A, K

Kill a detached screen: screen -X -S session_name quit

Más info: https://www.youtube.com/watch?v=_ZJiEX4rmN4

Terminal window
$ sudo apt install screen
$ screen –version
Terminal window
# Iniciamos
$ screen
# Alternativa: También podemos iniciar una sesión y darle un nombre
# usando la variable -S. Por ejemplo
$ screen -S session1

Comandos para realizar la multiplexación de la terminal.

sshfs nos permite montar carpetas de máquinas remotas a través de ssh.

https://www.digitalocean.com/community/tutorials/how-to-use-sshfs-to-mount-remote-file-systems-over-ssh

Instalación en máquina remota

Terminal window
apt update
apt install sshfs

Montar en local

Terminal window
sudo mkdir /mnt/remoto
sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet
sudo umount /mnt/droplet
  • o precedes miscellaneous mount options (this is the same as when running the mount command normally for non-SSH disk mounts). In this case, you are using allow_other to allow other users to have access to this mount (so that it behaves like a normal disk mount, as sshfs prevents this by default), and default_permissions (so that it otherwise uses regular filesystem permissions).
  • sammy@your_other_server:~/ provides the full path to the remote directory, including the remote username, sammy, the remote server, your_other_server, and the path, in this case ~/ for the remote user’s home directory. This uses the same syntax as SSH or SCP.
  • /mnt/droplet is the path to the local directory being used as a mount point.

Script que nos facilita la instalación de una VPN

https://github.com/Nyr/openvpn-install