Cos'è SSH e a cosa serve
Il protocollo SSH (Secure Shell) sostituisce i vecchi protocolli insicuri come telnet e rlogin, fornendo autenticazione e crittografia completa per tutti i dati scambiati sulla rete. Opera normalmente sulla porta standard 22.
- Accesso remoto sicuro a server e macchine Linux
- Esecuzione remota di comandi e script
- Trasferimento sicuro di file (scp o sftp)
- Tunneling crittografato e port forwarding
Connessione Base
La sintassi generale del comando SSH è:
ssh username@hostname
Esempio:
Alla prima connessione, SSH richiederà di confermare l'impronta (fingerprint) del server remoto e successivamente chiederà la password dell'utente.
Autenticazione con Chiave Pubblica
Per evitare di digitare la password ad ogni accesso e migliorare drasticamente la sicurezza, SSH supporta l'uso di una coppia di chiavi crittografiche (chiave pubblica e chiave privata).
- Genera una coppia di chiavi sul tuo computer:
ssh-keygen -t ed25519 -C "[email protected]"
- Invia la chiave pubblica al server remoto:
ssh-copy-id username@hostname
Da questo momento puoi accedere senza inserire la password, poiché l'autenticazione avverrà in modo trasparente tramite la tua chiave privata locale.
File di Configurazione SSH (~/.ssh/config)
Per velocizzare le connessioni frequenti, puoi creare o modificare il file ~/.ssh/config definendo alias pratici:
Host my-server
HostName 192.168.1.10
User root
IdentityFile ~/.ssh/id_ed25519
A questo punto, ti basterà digitare semplicemente:
ssh my-server
Trasferimento File con SSH
Puoi copiare file tra il tuo computer locale e il server remoto usando scp o sftp.
Esempi con SCP:
scp file.txt [email protected]:/home/user/
scp [email protected]:/var/log/syslog ./
Oppure avvia una sessione SFTP interattiva:
sftp [email protected]
Port Forwarding (Tunneling SSH)
SSH permette di creare tunnel crittografati tra porte locali e remote, ideale per accedere a servizi o pannelli interni non esposti su Internet.
Esempio: inoltra la porta locale 8080 alla porta 80 del server remoto:
ssh -L 8080:localhost:80 user@remote_host
Ora puoi aprire http://localhost:8080 nel tuo browser locale per visualizzare il servizio remoto come se fosse in locale.
Comandi Utili
ssh -v— Mostra informazioni dettagliate di debug durante la connessionessh-add ~/.ssh/id_ed25519— Aggiunge una chiave privata all'agente SSHssh-agent bash— Avvia una nuova sessione dell'agente SSHexit— Chiude la sessione SSH attiva
Risoluzione dei Problemi Comuni
- Permission denied (publickey): Controlla i permessi dei file in ~/.ssh/ (chmod 700 ~/.ssh e chmod 600 ~/.ssh/authorized_keys).
- Connection refused: Verifica che il servizio SSH sia attivo sul server (
sudo systemctl status ssh). - Timeout: Assicurati che la porta 22 sia aperta sul firewall.
Conclusione
SSH è uno strumento fondamentale per chiunque gestisca server Linux o infrastrutture di rete. Configurarlo correttamente garantisce la massima sicurezza e velocità operativa quotidiana.