ssh
ssh (Secure Shell) permette di collegarsi in modo cifrato a un altro computer o server e di usarne il terminale.
Connessione base
ssh utente@indirizzo
ssh michele@192.168.1.10
ssh michele@server.esempio.it
ssh -p 2222 michele@server.esempio.it
-p serve se SSH ascolta su una porta diversa dalla 22.
Per uscire dalla sessione: exit oppure Ctrl+D.
Eseguire un singolo comando
ssh michele@server "uptime"
ssh michele@server "sudo systemctl status nginx"
Autenticazione con chiave
Più sicura e comoda della password.
Generare una coppia di chiavi:
ssh-keygen -t ed25519 -C "michele@portatile"
Copiare la chiave pubblica sul server:
ssh-copy-id michele@server
Da quel momento l'accesso avviene senza password (o con la passphrase della chiave).
Permessi corretti, altrimenti SSH rifiuta la chiave:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys
File di configurazione
~/.ssh/config evita di ricordare indirizzi e opzioni:
Host nas
HostName 192.168.1.20
User michele
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host *
ServerAliveInterval 60
Poi basta:
ssh nas
Copiare file: scp e rsync
scp file.txt michele@server:/home/michele/
scp michele@server:/var/log/syslog .
scp -r cartella/ michele@server:/tmp/
rsync -avz --progress cartella/ michele@server:/backup/
rsync è preferibile per copie grandi o ripetute, perché trasferisce solo le differenze.
Tunnel (port forwarding)
Inoltro locale: apre sul tuo PC la porta 8080 che raggiunge la porta 80 del server.
ssh -L 8080:localhost:80 michele@server
Proxy SOCKS dinamico:
ssh -D 1080 michele@server
Inoltro remoto:
ssh -R 9000:localhost:3000 michele@server
Jump host
ssh -J utente@bastione utente@interno
Opzioni utili
| Opzione | Significato |
|---|---|
-p | Porta |
-i | File della chiave privata |
-v | Output dettagliato per il debug (-vvv ancora di più) |
-N | Non esegue comandi (utile con i tunnel) |
-f | Va in background |
-X | Inoltra le applicazioni grafiche X11 |
-A | Inoltra l'agente SSH |
Sicurezza del server
In /etc/ssh/sshd_config:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Poi:
sudo sshd -t
sudo systemctl restart sshd
Prima di disabilitare le password, verifica che l'accesso con chiave funzioni, in una seconda sessione aperta.
Problemi comuni
Permission denied (publickey): chiave non installata sul server o permessi sbagliati.Connection refused: servizio SSH non attivo o porta/firewall errati.REMOTE HOST IDENTIFICATION HAS CHANGED: il server è stato reinstallato (o c'è un problema di sicurezza). Se sei certo che sia legittimo:ssh-keygen -R indirizzo.- Debug:
ssh -v utente@servere, lato server,journalctl -u sshd -e.