Esercizio - Connettersi a una macchina virtuale Linux con SSH

Di seguito verrà descritto come connettersi alla macchina virtuale Linux con SSH e configurare Apache, in modo da avere un server Web in esecuzione.

Ottenere l'indirizzo IP pubblico della macchina virtuale

  1. Nel portale di Azure verificare che il pannello Panoramica per la macchina virtuale creata in precedenza sia aperto. La macchina virtuale è disponibile in Tutte le risorse se è necessario aprirla. Nel pannello Panoramica è possibile:

    • Verificare se la macchina virtuale è in esecuzione
    • Arrestare o riavviare la VM
    • Ottenere l'indirizzo IP pubblico della macchina virtuale
    • Visualizzare l'attività di CPU, disco e rete
  2. Selezionare Connect > SSH nella parte superiore del riquadro.

  3. Nel passaggio 4 copiare il comando negli Appunti.

    Screenshot del portale di Azure che illustra il pannello di connessione a una macchina virtuale configurato per connettersi tramite SSH alla macchina virtuale Linux appena creata.

  4. Quando è stata creata la coppia di chiavi SSH, è stato usato il percorso del file di chiave privata SSH predefinito. Non è quindi necessario specificare il percorso della chiave privata nel comando usando il flag -i con il percorso della chiave privata. Se invece fosse stato immesso un percorso diverso durante la creazione della coppia di chiavi SSH, sarebbe necessario aggiungere tale percorso al comando.

Connettersi tramite SSH

  1. Incollare il comando dagli Appunti in Azure Cloud Shell. Eliminare il flag -i e il segnaposto del percorso della chiave privata. Dovrebbe essere simile all'esempio seguente con un indirizzo IP e un nome utente diversi:

    ssh azureuser@13.68.150.164
    
  2. La prima volta che ci si connette, SSH richiede l'autenticazione con un host sconosciuto. SSH informa che non è stata mai stabilita una connessione a questo server. Se ciò è vero, è perfettamente normale ed è possibile rispondere yes per salvare l'impronta digitale del server nel file host noto:

    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.
    
  3. Immettere la passphrase usata quando è stata creata la coppia di chiavi SSH.

  4. Al prompt dei comandi della shell per Linux provare a eseguire alcuni comandi Linux

    • ls -la / per visualizzare la radice del disco
    • ps -l per mostrare tutti i processi in esecuzione
    • dmesg per elencare tutti i messaggi del kernel
    • lsblk per elencare tutti i dispositivi a blocchi: qui verranno visualizzate le unità

    L'aspetto più interessante da osservare nell'elenco delle unità è cosa manca. Si noti che l'unità Dati (sdc) è presente ma non montata nel file system. Azure ha aggiunto un disco rigido virtuale, ma non l'ha inizializzato.

Inizializzare i dischi dati

Tutte le unità aggiuntive create da zero dovranno essere inizializzate e formattate. Il processo per l'inizializzazione è identico a quello valido per un disco fisico:

  1. Prima di tutto identificare il disco. Questo passaggio è già stato eseguito. Si potrebbe anche usare dmesg | grep SCSI, che elencherà tutti i messaggi dal kernel per i dispositivi SCSI.

  2. Dopo aver identificato l'unità (sdc) è necessario inizializzarla ed è possibile usare fdisk a tale scopo. Sarà necessario eseguire il comando con sudo e specificare il disco da partizionare. Useremo il comando seguente per creare una nuova partizione primaria:

    (echo n; echo p; echo 1; echo ; echo ; echo w) | sudo fdisk /dev/sdc
    
  3. A questo punto, è necessario scrivere un file system nella partizione con il comando mkfs.

    sudo mkfs -t ext4 /dev/sdc1
    
  4. Infine, è necessario montare l'unità nel file system. Si supponga di avere una cartella data. Creiamo la cartella del punto di montaggio e montiamo l'unità.

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

Il disco è stato inizializzato e montato. Per altri dettagli su questo processo, vedere il modulo Aggiungere e ridimensionare i dischi di macchine virtuali di Azure. Questa attività viene trattata in maggior dettaglio in questo modulo.

Installare software nella macchina virtuale

Come si può notare, SSH consente di usare una macchina virtuale Linux come un computer locale. È possibile amministrare questa macchina virtuale come qualsiasi altro computer Linux: installare software, configurare ruoli, mettere a punto le funzionalità ed eseguire altre attività quotidiane. Ora si analizza l'installazione di software.

Quando si è connessi alla VM tramite SSH è anche possibile installare software da Internet. Le macchine di Azure sono connesse a Internet per impostazione predefinita. È possibile usare i comandi standard per installare i pacchetti software più diffusi direttamente dai repository standard. Questo è l'approccio che verrà usato per installare Apache.

Installare il server Web Apache

Apache è disponibile all'interno dei repository software predefiniti di Ubuntu, quindi verrà installato usando gli strumenti di gestione dei pacchetti convenzionali:

  1. Per iniziare, aggiornare l'indice dei pacchetti locali in modo che rispecchi le modifiche upstream più recenti:

    sudo apt-get update
    
  2. Successivamente, installare Apache:

    sudo apt-get install apache2 -y
    
  3. L'operazione dovrebbe essere avviata automaticamente ed è possibile controllare lo stato usando systemctl:

    sudo systemctl status apache2 --no-pager
    

    Il comando systemctl restituisce un output simile al seguente:

    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.
    
  4. Infine, è possibile provare a recuperare la pagina predefinita tramite l'indirizzo IP pubblico. Tuttavia, anche se il server Web è in esecuzione nella macchina virtuale, non si otterrà una connessione o una risposta valida. Perché?

È necessario eseguire un altro passaggio per poter interagire con il server Web. La rete virtuale sta bloccando la richiesta in ingresso. È possibile cambiare questo comportamento tramite la configurazione. Ora si vedrà come consentire la richiesta in ingresso.