Actividad 1: SSH. Parámetros básicos, transferencia de archivos y combinación de ssh con tuberías.

per Victor Carceler darrera modificació 2020-04-08T16:20:29+02:00

Teoría:

Lea las páginas 44-56 del documento: Administració de sistemes operatius de xarxes.

En este documento encontrará información sobre:

  • Introducción a la administración remota.
  • Los parámetros básicos para establecer una conexión SSH. Punto 3.1.3, página 49.
  • La transferencia de archivos con scp y sftp . Páginas 50 y 51.
  • Redirección de puertos y túneles. Página 51.
  • Mecanismos de autenticación. Página 52.
  • Autenticación de clave pública. Página 53.
  • Configuración del cliente SSH. Página 54.
  • Configuración del servidor SSH. Página 55.

Entrega de la actividad:

La actividad se entregará en forma de documento HTML 5. En el documento deberá aparecer el fragmento de enunciando en el que se está trabajando y su resolución, con los comandos y explicaciones que sean necesarios.

Por ejemplo:

Indique cómo establecer una sesión SSH con la máquina virtual de escritorio.

ssh usuario@192.168.0.100

Cuando se nos solicita la contraseña la introducimos.

Si la actividad solicita que se incluya un vídeo demostrativo puede utilizar cualquier programa para guardar el escritorio como:

  • La combinación de teclas CTRL + ALT + SHIFT + R permite activar y desactivar la grabación del escritorio en Ubuntu 18.04.
  • Un programa especializado como OBS Studio que se encuentra en los repositorios de Ubuntu con el nombre: obs-studio.

El vídeo obtenido se subirá a Youtube y estará insertado en el documento HTML 5.

Desarrollo de la actividad:

  1. Conexiones básicas. Entregar en HTML5. Entregar en HTML5
  2. Transferencias de archivos con scp. Entregar en HTML5
  3. Combinando ssh con tuberías. Entregar en HTML5 con vídeo demostrativo.

Conexiones básicas:

En este apartado se utilizarán dos máquinas con Ubuntu de escritorio (a partir de ahora llamadas local y remota). Pueden ser dos máquinas virtuales o, si el ordenador anfitrión tiene Ubuntu, puede utilizarse el ordenador anfitrión como máquina local y una máquina virtual como máquina remota.

En el momento de escribir el enunciado yo he utilizado:

  • Como máquina local: mi propio ordenador con Ubuntu 18.04. El hostname de la máquina local es: luna
  • Como máquina remota: una máquina virtual con Ubuntu 20.04 beta. El hostname de la máquina remota es: fossa

Ambas máquinas deben tener una configuración de red que permita la comunicación.

  1. Describa el entorno utilizado.
    • Se trata de una máquina física y una virtual o de dos máquinas virtuales.
    • Versión del sistema operativo instalado.
    • Qué direcciones de red y configuración se utiliza.
    • ¿Qué usuarios existen en la máquina remota?
  2. ¿Cómo se puede saber si la máquina remota tiene el servidor ssh en funcionamiento?
  3. ¿Cómo se instala el servidor ssh? Si es necesario instálelo.
  4. ¿Cómo se establece una sesión ssh desde la máquina local hacia la máquina remota?
  5. Explique la siguiente información que proporciona ssh la primera vez que se accede a un equipo remoto. ¿Qué sentido tiene la pregunta? ¿Qué advertencia se hace antes de pedir la contraseña?
    vcarceler@luna:~$ ssh usuario@192.168.1.155
    The authenticity of host '192.168.1.155 (192.168.1.155)' can't be established.
    ECDSA key fingerprint is SHA256:nMTIvsGzNuUUPXdCmd2lP6akskLlaj365XoxRfflrAI.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '192.168.1.155' (ECDSA) to the list of known hosts.
    usuario@192.168.1.155's password:
  6. ¿Cómo se puede utilizar ssh para ejecutar un solo comando en la máquina remota?
  7. Demuestre cómo se utiliza ssh para ejecutar el comando df -h en la máquina remota.
  8. Establezca una sesión ssh con la máquina remota utilizando y sin utilizar el parámetro -X. Una vez establecida ejecute el comando xeyes. ¿Qué ocurre en cada caso? ¿Qué función tiene el parámetro -X al establecer la sesión?
    Ejemplo: ssh -X usuario@192.168.0.100
  9. ¿Qué comando sería necesario escribir en la máquina local para establecer una sesión con la máquina remota si el servidor ssh estuviera configurado para escuchar en el puerto 1022?

Transferencias de archivos con scp

  1. ¿Cómo se copia un fichero desde la máquina local a la máquina remota?
  2. ¿Cómo se copia un fichero que está en ~/directorio1 (máquina local) a ~/directorio1 (en la máquina remota)?
  3. ¿Cómo se copia un directorio de forma recursiva (con todo su contenido) desde la máquina local a la máquina remota?
  4. Estando en máquina local. ¿Cómo se copia un fichero de la máquina remota en el directorio actual?
  5. Utilice el siguiente comando para crear el fichero datos de 1GiB
    vcarceler@luna:~$ dd if=/dev/zero of=datos bs=1M count=1024
    1024+0 registros leídos
    1024+0 registros escritos
    1073741824 bytes (1,1 GB, 1,0 GiB) copied, 1,49677 s, 717 MB/s
    vcarceler@luna:~$ ll -lh datos
    -rw-r--r-- 1 vcarceler vcarceler 1,0G abr  8 11:22 datos
    vcarceler@luna:~$
  6. Utlice la opción -l para copiar el fichero desde la máquina local a la remota en los siguientes casos tomando nota de la velocidad de transmisión que indica scp.
    • Sin límite de velocidad
    • Con un límite de 1000 Kb/s

Combinando SSH con tuberías

Resulta muy práctico combinar ssh con las tuberías del shell para combinar operaciones en la máquina local y en la máquina remota.

Realice las siguientes instrucciones para comprobar el uso de ssh con tuberías del shell.

  1. Prepare en la máquina remota un directorio con varios subdirectorios. Instale el comando tree si es necesario con apt install tree.
    usuario@fossa:~$ mkdir -p directorio/subdirectorio{1,2,3,4,5}/{datos,backup}
    usuario@fossa:~$ tree directorio/
    directorio/
    ├── subdirectorio1
    │   ├── backup
    │   └── datos
    ├── subdirectorio2
    │   ├── backup
    │   └── datos
    ├── subdirectorio3
    │   ├── backup
    │   └── datos
    ├── subdirectorio4
    │   ├── backup
    │   └── datos
    └── subdirectorio5
        ├── backup
        └── datos
    
    15 directories, 0 files
    usuario@fossa:~$
  2. Desde la máquina local se puede ejecutar un comando en la máquina remota de la siguiente manera:
    vcarceler@luna:~$ ssh usuario@192.168.1.155 tree directorio
    usuario@192.168.1.155's password: 
    directorio
    ├── subdirectorio1
    │   ├── backup
    │   └── datos
    ├── subdirectorio2
    │   ├── backup
    │   └── datos
    ├── subdirectorio3
    │   ├── backup
    │   └── datos
    ├── subdirectorio4
    │   ├── backup
    │   └── datos
    └── subdirectorio5
        ├── backup
        └── datos
    
    15 directories, 0 files
    vcarceler@luna:~$

    Observe que en este caso el comando tree se está ejecutando en la máquina remota y una vez completada la ejecución se cierrra la sesión ssh.
  3. Se puede utilizar el comando tar para archivar el directorio (que se encuentra en la máquina remota) y escribir el archivo en la máquina local de la siguiente manera:
    vcarceler@luna:~$ ssh usuario@192.168.1.155 'tar czf - directorio' >directorio.tgz
    usuario@192.168.1.155's password: 
    vcarceler@luna:~$ tar tzf directorio.tgz 
    directorio/
    directorio/subdirectorio4/
    directorio/subdirectorio4/backup/
    directorio/subdirectorio4/datos/
    directorio/subdirectorio5/
    directorio/subdirectorio5/backup/
    directorio/subdirectorio5/datos/
    directorio/subdirectorio2/
    directorio/subdirectorio2/backup/
    directorio/subdirectorio2/datos/
    directorio/subdirectorio1/
    directorio/subdirectorio1/backup/
    directorio/subdirectorio1/datos/
    directorio/subdirectorio3/
    directorio/subdirectorio3/backup/
    directorio/subdirectorio3/datos/
    vcarceler@luna:~$
  4. También es posible desarchivar los datos en la máquina local con la siguiente sentencia.
    vcarceler@luna:~$ ssh usuario@192.168.1.155 'tar czf - directorio' | tar xz
    usuario@192.168.1.155's password: 
    vcarceler@luna:~$ tree directorio
    directorio
    ├── subdirectorio1
    │   ├── backup
    │   └── datos
    ├── subdirectorio2
    │   ├── backup
    │   └── datos
    ├── subdirectorio3
    │   ├── backup
    │   └── datos
    ├── subdirectorio4
    │   ├── backup
    │   └── datos
    └── subdirectorio5
        ├── backup
        └── datos
    
    15 directories, 0 files
    vcarceler@luna:~$

Realice un vídeo en el que se pueda ver:

  1. La construcción de una jerarquía de directorios en la máquina remota
  2. Cómo se pueden ver los directorios de la máquina remota desde la máquina local
  3. Cómo se pueden combinar ssh y tar para replicar la jerarquía de directorios de la máquina remota a la máquina local