SSH
SSH (Secure SHell) è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host.
Nello home directory dell'utente stud del server remoto troviamo la chiave pubblica dell'utente stud del server 1.
Il file di configurazione ssdh_config contiene queste informazioni principali:
Port - -> La porta di ascolto di default è 22
1) Il comando ssh-keygen genera due chiavi per un utente: una privata - id_rsa - che lo identifica e una pubblica - id_rsa_pub - e sono memorizzate nella home directory dell'utente - /home/stud/.ssh/id_rsa.
2) Il comando ssh-copy-id copia la chiave pubblica nella home directory di un server target/remoto di cui si conosce la password dell'utente (nell'esempio su entrambi i server è denfitio l'utente stud).
Se devo specificare l'utente del server remoto usare:
ssh-copy-id daffy@192.168.1.109
Nello home directory dell'utente stud del server remoto troviamo la chiave pubblica dell'utente stud del server 1.
3) Quindi se uso il comando ssh 192.168.1.109 per connettermi al server remoto, compare la schermata in cui inserire la passphrase.
Per un accesso ad uno specifico utente
ssh user@ip | host
Il server remoto (server2) legge sua chiave pubblica ed invia come risposta un pacchetto criptato con la chiave pubblica.
A questo punto se la chiave privata del server1 è associata correttamente a quella chiave pubblica, invia una risposta al server2 e si crea una sessione cifrata.
Il comando ssh-agent /bin/bash alloca spazio nella /bin /bash per tenere in cache la phassprase della chiave privata.
Il comando ssh-add aggiunge la passphrase nella cache.
Ad esempio accediamo al virtual terminale (tty) dell'utente stud con il comando Alt+Ctrl+F3
Con il comando ssh accediamo al server 2 e ci viene chiesta la phassprase.
Se invece uso i comandi precedenti non verrà chiesta la passphrase quando si esegue il comando ssh.
I log sono sotto
/var/log/secure
Il file di configurazione lato client è
/etc/ssh/ssh_config
mentre lato server è
/etc/ssh/sshd_config
Port - -> La porta di ascolto di default è 22
PermitRootLogin --> impostato di default a "yes" ma si può impostare a "no" se si vuole disabilitare l'utente root ad accedere in sh, per una questione di sicurezza
PubkeyAuthentication --> di default è "yes" e abilita l'autenticazione su base chiave pubblica
PasswordAuthentication --> di default è "yes" e abilita l'autenticazione con password
X11Forwarding --> se a "yes" permette di usare uno schermo grafico su un server remoto
ListenAddress --> di default è in ascolto su tutti gli ip infatti è settato a 0.0.0.0. Se si vuole mettere in ascolto solo su indirizzo ip basta inserirlo e eliminare #. Ad esempio ListenAddess 192.168.1.109
Disabilitare l'accesso al server in ssh con utenza root:
Impostare il parametro a no ed eliminare il simbolo #.
PermitRootLogin noRiavviare il servizio sshd
systemctl restart sshd
Per testare basta collegarsi in locale
ssh root@localhost
Inserendo la pwd corretta non si riesce ad accedere
Se si vuole autorizzare solo specifici utente ad accedere in ssh impostare sul server il parametro
AllowUsers <username1 > <username2 > <usernameN >
Riavviare il servizio sshd
systemctl restart sshd
Per leggere il manuale:
# man sshd_config