Introduzione
Uno strumento essenziale da padroneggiare come amministratore di sistema è SSH.
SSH, o Secure Shell, è un protocollo utilizzato per accedere in modo sicuro ai sistemi remoti. È il modo più comune per accedere ai server Linux remoti.
In questa guida, discuteremo come utilizzare SSH per connettersi a un sistema remoto.
Dispiega le tue applicazioni frontend da GitHub utilizzando DigitalOcean App Platform. Lascia che DigitalOcean si concentri sulla scalabilità della tua app.
Sintassi Principale
Per connettersi a un sistema remoto utilizzando SSH, utilizzeremo il comando ssh
.
Se stai utilizzando Windows, dovrai installare una versione di OpenSSH per poter eseguire ssh
da un terminale. Se preferisci lavorare in PowerShell, puoi seguire la documentazione di Microsoft per aggiungere OpenSSH a PowerShell. Se preferisci avere a disposizione un ambiente Linux completo, puoi configurare WSL, il Sottosistema Windows per Linux, che includerà ssh
per impostazione predefinita. Infine, come terza opzione leggera, puoi installare Git for Windows, che fornisce un ambiente nativo di terminale bash per Windows che include il comando ssh
. Ognuna di queste opzioni è ben supportata e la scelta dipenderà dalla preferenza personale.
Se stai utilizzando un Mac o Linux, avrai già il comando ssh
disponibile nel tuo terminale.
La forma più diretta del comando è:
Il remote_host
in questo esempio è l’indirizzo IP o il nome di dominio a cui stai cercando di connetterti.
Questo comando presume che il tuo nome utente sul sistema remoto sia lo stesso del tuo nome utente sul sistema locale.
Se il tuo nome utente è diverso sul sistema remoto, puoi specificarlo utilizzando questa sintassi:
Una volta connesso al server, potresti essere chiesto di verificare la tua identità fornendo una password. In seguito, vedremo come generare delle chiavi da utilizzare al posto delle password.
Per uscire dalla sessione ssh e tornare alla sessione locale della shell, digitare:
Come Funziona SSH?
SSH funziona connettendo un programma client a un server ssh, chiamato sshd
.
Nella sezione precedente, ssh
era il programma client. Il server ssh era già in esecuzione sull’host remoto che abbiamo specificato, remote_host
.
In quasi tutti gli ambienti Linux, il server sshd
dovrebbe avviarsi automaticamente. Se non è in esecuzione per qualsiasi motivo, potresti dover accedere temporaneamente al tuo server tramite una console basata su web o una console seriale locale.
Il processo necessario per avviare un server ssh dipende dalla distribuzione di Linux che stai utilizzando.
Su Ubuntu, puoi avviare il server ssh digitando:
Questo dovrebbe avviare il server sshd e potrai quindi accedere in remoto.
Come Configurare SSH
Quando si modificano le impostazioni di SSH, si stanno modificando le impostazioni del server sshd.
In Ubuntu, il file di configurazione principale di sshd si trova in /etc/ssh/sshd_config
.
Eseguire il backup della versione attuale di questo file prima di modificarlo:
Apri utilizzando nano
o il tuo editor di testo preferito:
Vorrai lasciare la maggior parte delle opzioni in questo file invariata. Tuttavia, ci sono alcune che potresti voler esaminare:
Port 22
La dichiarazione di porta specifica su quale porta il server sshd sarà in ascolto per le connessioni. Per impostazione predefinita, questa è 22
. Probabilmente dovresti lasciare questa impostazione invariata, a meno che tu non abbia ragioni specifiche per fare diversamente. Se modifichi la tua porta, ti mostreremo come connetterti alla nuova porta in seguito.
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
Le dichiarazioni delle chiavi host specificano dove cercare le chiavi host globali. Discuteremo successivamente cosa sia una chiave host.
SyslogFacility AUTH
LogLevel INFO
Questi due elementi indicano il livello di registrazione che dovrebbe verificarsi.
Se stai riscontrando difficoltà con SSH, aumentare la quantità di registrazione potrebbe essere un buon modo per scoprire qual è il problema.
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
Questi parametri specificano alcune informazioni di accesso.
LoginGraceTime
specifica quanti secondi mantenere viva la connessione senza effettuare l’accesso con successo.
Potrebbe essere una buona idea impostare questo tempo appena un po’ più alto rispetto al tempo necessario per effettuare normalmente l’accesso.
PermitRootLogin
seleziona se l’utente root è autorizzato a effettuare l’accesso.
Nella maggior parte dei casi, questo dovrebbe essere cambiato in no
quando hai creato un account utente che ha accesso a privilegi elevati (tramite su
o sudo
) e può effettuare l’accesso tramite ssh, al fine di ridurre al minimo il rischio di accesso di root al tuo server.
strictModes
è una guardia di sicurezza che rifiuterà un tentativo di accesso se i file di autenticazione sono leggibili da tutti.
Questo impedisce tentativi di accesso quando i file di configurazione non sono sicuri.
X11Forwarding yes
X11DisplayOffset 10
Questi parametri configurano una funzionalità chiamata Inoltro X11. Questo consente di visualizzare l’interfaccia grafica utente (GUI) di un sistema remoto sul sistema locale.
Questa opzione deve essere abilitata sul server e data con il client SSH durante la connessione con l’opzione -X
.
Dopo aver apportato le modifiche, salva e chiudi il file. Se stai utilizzando nano
, premi Ctrl+X
, quindi quando richiesto, Y
e poi Invio.
Se hai modificato qualche impostazione in /etc/ssh/sshd_config
, assicurati di ricaricare il tuo server sshd per implementare le modifiche:
Dovresti testare accuratamente le tue modifiche per assicurarti che operino nel modo previsto.
Potrebbe essere una buona idea avere alcune sessioni terminali aperte mentre apporti modifiche. Questo ti consentirà di ripristinare la configurazione se necessario senza bloccarti fuori.
Come Accedere a SSH con le Chiavi
Pur essendo utile poter accedere a un sistema remoto utilizzando le password, è più veloce e sicuro configurare l’autenticazione basata su chiavi.
Come funziona l’autenticazione basata su chiave?
L’autenticazione basata su chiave funziona creando una coppia di chiavi: una chiave privata e una chiave pubblica.
La chiave privata si trova sul computer client ed è protetta e mantenuta segreta.
La chiave pubblica può essere fornita a chiunque o inserita su qualsiasi server a cui desideri accedere.
Quando tenti di connetterti usando una coppia di chiavi, il server utilizzerà la chiave pubblica per creare un messaggio per il computer client che può essere letto solo con la chiave privata.
Il computer client invia quindi la risposta appropriata al server e il server saprà che il client è legittimo.
Questo processo viene eseguito automaticamente dopo aver configurato le tue chiavi.
Come Creare Chiavi SSH
Le chiavi SSH dovrebbero essere generate sul computer da cui desideri effettuare l’accesso. Di solito si tratta del tuo computer locale.
Inserisci quanto segue nella riga di comando:
Potresti essere invitato a impostare una password sui file chiave stessi, ma questa è una pratica abbastanza rara e dovresti premere Invio attraverso i prompt per accettare le impostazioni predefinite. Le tue chiavi verranno create in ~/.ssh/id_rsa.pub e ~/.ssh/id_rsa.
Cambia nella directory .ssh
digitando:
Guarda i permessi dei file:
Output-rw-r--r-- 1 demo demo 807 Sep 9 22:15 authorized_keys
-rw------- 1 demo demo 1679 Sep 9 23:13 id_rsa
-rw-r--r-- 1 demo demo 396 Sep 9 23:13 id_rsa.pub
Come puoi vedere, il file id_rsa
è leggibile e scrivibile solo per il proprietario. Questo aiuta a mantenerlo segreto.
Il file id_rsa.pub
, invece, può essere condiviso e ha permessi appropriati per questa attività.
Come Trasferire la Tua Chiave Pubblica al Server
Se al momento hai accesso basato su password a un server, puoi copiare la tua chiave pubblica su di esso emettendo questo comando:
Questo avvierà una sessione SSH. Dopo aver inserito la tua password, copierà la tua chiave pubblica nel file delle chiavi autorizzate del server, il che ti permetterà di accedere senza password la prossima volta.
Opzioni Lato Client
Ci sono diversi flag opzionali che puoi fornire quando ti connetti tramite SSH.
Alcuni di questi potrebbero essere necessari per corrispondere alle impostazioni nella configurazione del sshd
host remoto.
Per esempio, se hai cambiato il numero di porta nella tua configurazione sshd
, dovrai corrispondere a quella porta sul lato client digitando:
Nota: Cambiare la porta ssh è un modo ragionevole per fornire sicurezza tramite oscurità. Se consenti connessioni ssh a un server ampiamente noto sulla porta 22 come normale, e hai l’autenticazione tramite password abilitata, probabilmente sarai attaccato da molti tentativi di accesso automatizzati. Utilizzare esclusivamente l’autenticazione basata su chiavi ed eseguire ssh su una porta non standard non è la soluzione di sicurezza più complessa che puoi adottare, ma dovrebbe ridurre al minimo tali tentativi.
Se vuoi eseguire un singolo comando su un sistema remoto, puoi specificarlo dopo l’host in questo modo:
Ti connetterai alla macchina remota, autenticandoti, e il comando verrà eseguito.
Come detto prima, se l’inoltro X11 è abilitato su entrambi i computer, puoi accedere a quella funzionalità digitando:
Se hai gli strumenti appropriati sul tuo computer, i programmi GUI che usi sul sistema remoto apriranno ora la loro finestra sul tuo sistema locale.
Disabilitare l’Autenticazione tramite Password
Se hai creato le chiavi SSH, puoi migliorare la sicurezza del tuo server disabilitando l’autenticazione solo tramite password. Oltre alla console, l’unico modo per accedere al tuo server sarà tramite la chiave privata che si abbina alla chiave pubblica che hai installato sul server.
Avviso: Prima di procedere con questo passaggio, assicurati di avere installato una chiave pubblica sul tuo server. Altrimenti, sarai bloccato fuori!
Come root o utente con privilegi sudo, apri il file di configurazione di sshd
:
Trova la riga che contiene Password Authentication
e rimuovi il commento togliendo il #
iniziale. Puoi quindi cambiare il suo valore in no
:
PasswordAuthentication no
Altre due impostazioni che non dovrebbero essere modificate (a meno che tu non abbia già modificato questo file in precedenza) sono PubkeyAuthentication
e ChallengeResponseAuthentication
. Sono impostati per impostazione predefinita e dovrebbero essere come segue:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Dopo aver apportato le modifiche, salva e chiudi il file.
Ora puoi ricaricare il demone SSH:
L’autenticazione tramite password dovrebbe essere disabilitata e il tuo server dovrebbe essere accessibile solo tramite autenticazione con chiave SSH.
Conclusione
Imparare a muoversi in SSH sarà di grande beneficio per qualsiasi tuo futuro impegno nel cloud computing. Man mano che utilizzi le varie opzioni, scoprirai funzionalità più avanzate che possono rendere la tua vita più semplice. SSH è rimasto popolare perché è sicuro, leggero e utile in situazioni diverse.
Successivamente, potresti voler imparare a lavorare con SFTP per effettuare trasferimenti di file da riga di comando.
Source:
https://www.digitalocean.com/community/tutorials/how-to-use-ssh-to-connect-to-a-remote-server