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
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
Selezionare Connect > SSH nella parte superiore del riquadro.
Nel passaggio 4 copiare il comando negli Appunti.
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
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
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.
Immettere la passphrase usata quando è stata creata la coppia di chiavi SSH.
Al prompt dei comandi della shell per Linux provare a eseguire alcuni comandi Linux
ls -la /
per visualizzare la radice del discops -l
per mostrare tutti i processi in esecuzionedmesg
per elencare tutti i messaggi del kernellsblk
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:
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.Dopo aver identificato l'unità (
sdc
) è necessario inizializzarla ed è possibile usarefdisk
a tale scopo. Sarà necessario eseguire il comando consudo
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
A questo punto, è necessario scrivere un file system nella partizione con il comando
mkfs
.sudo mkfs -t ext4 /dev/sdc1
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:
Per iniziare, aggiornare l'indice dei pacchetti locali in modo che rispecchi le modifiche upstream più recenti:
sudo apt-get update
Successivamente, installare Apache:
sudo apt-get install apache2 -y
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.
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.
Serve aiuto? Vedi la guida alla risoluzione dei problemi o fornisci commenti specifici segnalando un problema.