SSH
Collegamento da terminale remoto
Fornisce login remoto sicuro e altri servizi su canale insicuro
E' in realtà un'insieme di utilities:
ssh
- secure shell - emulatore di terminale remotosftp
- secure file transfer protocol - trasferimanto di filescp
- secure copy - copia di files tra sistemi remoti
SSH fornisce:
- Crittografazione del canale
- Autenticazione forte - basato sull'uso di chiavi doppie (Pubblica / Privata)
- Tunnel per altri protocolli su ssh (X Window)
Contrasta:
- IP spoofing
- DNS spoofing
- Alterazioni di routing
SSH è anche usato come canale di connessione sicuro da altre utilities, p.es. Git.
E' una utility Client-Server
- Il server deve essere attivo sulla macchina che ospita i login
- Il server si autentica con chiave pubblica
- Il client deve accettare e fidarsi della chiave pubblica
E' possibile preinstallare le chiavi pubbliche degli host conosciuti
Files:
/etc/ssh/known_hosts
(default per tutti gli utenti)$HOME/.ssh/known_hosts
(per ciascun utente)
Ubuntu
Può non essere installato di default il server ssh
Test:
sudo service ssh status
sudo systemctl status ssh
which sshd
Ricerca del pacchetto:
sudo apt search sshd
Installazione:
sudo apt install openssh-server
Abilitazione / disabilitazione al target corrente:
sudo systemctl enable | disable ssh
Uso di SSH
Ottenere l'indirizzo IP della macchina:
ip addr show
Test in locale:
ssh utente@IP
- Rispondere 'yes' alla domanda di accettazione della chiave pubblica
- Dare la password di utente
- Uscire dalla shell con 'exit'
- La chiave viene registrata nel file
~/.ssh/known_hosts
- E' possibile editare il file per rimuovere entries errate
Test da macchina remota:
ssh utente@IP
Collegamento SSH senza password
Questo diventa utilissimo in due casi principali:
- aumenta la sicurezza prevenendo la presenza di 'Man in the Middle'
- velocizza alcuni tipi di operazioni come il
git push
Il seguente è un esempio, da personalizzare secondo le proprie esigenze.
(1) E' necessaria una coppia di chiavi pubblica e privata. Se non se ne dispone già, generarla.
Generazione chiavi asimmetriche sul client:
ssh-keygen
- Accettare la locazione di default ~/.ssh/id_rsa
- Dare la passphrase 'segreto' ( 2 volte) (per esempio)
- Registrare la chiave allo ssh agent:
ssh-add
- Viene chiesta la passhphrase
La 'passphrase' serve a crittografare il file contenente la chiave privata sul proprio sistema. E' un file molto delicato; se fosserubato e se è in chiaro, inficierebbe tutta la sicurezza del metodo.
(2) La chiave pubblica deve essere manualmente installata sul server.
Copy della chiave pubblica
cat ~/.ssh/id_rsa.pub
Copy di tutto il file nel clipboard
Collegarsi al server: ssh utente@IP
- Siamo ancora in modo 'normale', quindi viene ancora chiesta la password.
Editare il file contenente le chiavi autorizzate dal server:
vi ~/.ssh/authorized_keys
Incollare la chiave dal clipboard
E' indispensabile che il file delle chiavi permesse abbia sicurezza aumentata:
chmod 600 authorized_keys
Uscire quindi dalla sessione 'normale col server.
(3) Test della connessione senza password
ssh utente@IP
Viene chiesta la 'passphrase'. Questa non è la password di accesso al server, ma la password con cui è stata crittografata la chiave privata sul client.
Il sistema del client di solito pone tale 'passphrase' in una cache locale per alcuni minuti.
Collegamento parametrico
Per evitare digitazioni inutili, si può redigere il file di configurazione sul client. ~/.ssh/config
Host userv
User mich
Hostname 192.168.1.2
Port 22
IdentityFile ~/.ssh/id_rsa
Sostituire il proprio nome di login sul server e l'indirizzo del server
Si possono aggiungere più paragrafi, per più host remoti
Test:
ssh userv