SSH

SSH (Secure SHell) è un protocollo che permette di stabilire una sessione remota cifrata tramite interfaccia a riga di comando con un altro host.

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


Il file di configurazione ssdh_config contiene queste informazioni principali:
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 no

Riavviare 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


Post popolari in questo blog

Create e Drop Pluggable Database

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione