Ejercicio: Conexión a una máquina virtual Linux mediante SSH

Nos conectaremos a ella con SSH y configuraremos Apache para tener un servidor web en ejecución.

Obtención de la dirección IP pública de la VM

  1. En Azure Portal, asegúrese de que está abierto el panel Información general de la máquina virtual que se creó anteriormente. Puede encontrar la máquina virtual en Todos los recursos si tiene que abrirla. El panel Información general permite lo siguiente:

    • Ver si la máquina virtual se está ejecutando
    • Detener o reiniciar la máquina virtual
    • Obtención de la dirección IP pública de la VM
    • Ver la actividad de la CPU, el disco y la red
  2. Haga clic en el botón Conectar de la parte superior del panel.

  3. En el panel Conectarse a una máquina virtual, observe los valores de Dirección IP y Número de puerto. En la pestaña SSH, también encontrará el comando que tiene que ejecutar localmente para conectarse a la máquina virtual. Copie el comando al Portapapeles.

    Captura de pantalla de Azure Portal en la que se muestra el panel Conexión a una máquina virtual configurado para conectarse mediante SSH a la máquina virtual Linux recién creada.

Conexión con SSH

  1. Pegue el comando desde el Portapapeles a Azure Cloud Shell. Debe tener un aspecto similar al ejemplo siguiente; pero tendrá otra dirección IP (y es posible que otro nombre de usuario si no usó jim):

    ssh jim@137.117.101.249
    

    La primera vez que nos conectemos, SSH nos preguntará sobre la autenticación en un host desconocido. SSH le indica que nunca se ha conectado a este servidor. Si eso es cierto, es perfectamente normal, y puede responder con para guardar la huella digital del servidor en el archivo de host conocido:

    The authenticity of host '137.117.101.249 (137.117.101.249)' can't be established.
    ECDSA key fingerprint is SHA256:w1h08h4ie1iMq7ibIVSQM/PhcXFV7O7EEhjEqhPYMWY.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added '137.117.101.249' (ECDSA) to the list of known hosts.
    
  2. Este comando abrirá una conexión SSH y le colocará en un símbolo del sistema del shell para Linux.

  3. Pruebe a ejecutar algunos comandos de Linux

    • ls -la / para mostrar la raíz del disco
    • ps -l para mostrar todos los procesos en ejecución
    • dmesg para enumerar todos los mensajes de kernel
    • lsblk para obtener una lista de todos los dispositivos de bloque, donde verá las unidades de disco

    El aspecto más interesante a observar en la lista de unidades es lo que falta. Observe que la unidad Datos (sdc) está presente, pero no está montada en el sistema de archivos. Azure agregó un disco duro virtual, pero no lo inicializó.

Inicialización de discos de datos

Tendrá que inicializar y dar formato a las unidades adicionales que cree desde cero. El proceso para la inicialización es idéntico al de un disco físico:

  1. En primer lugar, hay que identificar el disco. Eso ya se ha hecho. También se puede usar dmesg | grep SCSI, que mostrará una lista de todos los mensajes del kernel para los dispositivos SCSI.

  2. Una vez que se sepa la unidad (sdc) que se tiene que inicializar, se puede usar fdisk para hacerlo. Será preciso ejecutar el comando con sudo y especificar el disco que se desea particionar. Podemos usar el siguiente comando para crear una nueva partición principal:

    (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdc
    
  3. Después, hay que escribir un sistema de archivos en la partición con el comando mkfs.

    sudo mkfs -t ext4 /dev/sdc1
    
  4. Por último, es necesario montar la unidad en el sistema de archivos. Supongamos que vamos a tener la carpeta data. Vamos a crear la carpeta de punto de montaje y montar la unidad.

    sudo mkdir /data & sudo mount /dev/sdc1 /data
    

    Sugerencia

    Inicializamos el disco y lo montamos. Si está interesado en saber más sobre este proceso, examine el módulo Incorporación de discos a Azure Virtual Machines y selección de tamaño. Esta tarea se trata ahí con más detalle.

Instalación de software en la máquina virtual

Como puede ver, SSH permite trabajar con la máquina virtual Linux como si fuera un equipo local. Puede administrarla igual que cualquier otro equipo Linux: instalar software, configurar roles, ajustar características y otras tareas cotidianas. Vamos a centrarnos en la instalación de software.

También puede instalar software desde Internet cuando se conecta a la máquina virtual a través de SSH. De forma predeterminada, las máquinas de Azure están conectadas a Internet. Puede usar comandos estándar para instalar paquetes de software conocidos directamente desde los repositorios estándar. Vamos a usar este enfoque para instalar Apache.

Instalación del servidor web Apache

Apache está disponible en los repositorios de software predeterminados de Ubuntu, por lo que se instalará mediante herramientas de administración de paquetes convencionales:

  1. Empiece por actualizar el índice de paquetes local para reflejar los cambios ascendentes más recientes:

    sudo apt-get update
    
  2. Después, instale Apache:

    sudo apt-get install apache2 -y
    
  3. Se debería iniciar de forma automática; el estado se puede comprobar mediante systemctl:

    sudo systemctl status apache2 --no-pager
    

    El comando systemctl devuelve algo parecido a lo siguiente:

    apache2.service - The Apache HTTP Server
       Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
      Drop-In: /lib/systemd/system/apache2.service.d
               └─apache2-systemd.conf
       Active: active (running) since Mon 2018-09-03 21:00:03 UTC; 1min 34s ago
     Main PID: 11156 (apache2)
        Tasks: 55 (limit: 4915)
       CGroup: /system.slice/apache2.service
               ├─11156 /usr/sbin/apache2 -k start
               ├─11158 /usr/sbin/apache2 -k start
               └─11159 /usr/sbin/apache2 -k start
    
    test-web-eus-vm1 systemd[1]: Starting The Apache HTTP Server...
    test-web-eus-vm1 apachectl[11129]: AH00558: apache2: Could not reliably determine the server's fully qua
    test-web-eus-vm1 systemd[1]: Started The Apache HTTP Server.
    

    Nota

    Es trivial ejecutar comandos como este, aunque se trata de un proceso manual; si siempre necesita instalar software, podría plantearse la posibilidad de automatizar el proceso mediante scripts.

  4. Por último, podemos intentar recuperar la página predeterminada a través de la dirección IP pública. Pero, aunque el servidor web se ejecute en la máquina virtual, no obtendrá ninguna conexión o respuesta válidas. ¿Sabe por qué?

Es necesario realizar un paso más para poder interactuar con el servidor web. La red virtual está bloqueando la solicitud entrante. Esto se puede cambiar mediante la configuración. A continuación veremos cómo permitir la solicitud de entrada.