Server OpenSSH

Introduzione

Questa sezione introduce una serie di strumenti per il controllo remoto di computer e per il trasferimento di dati tra i computer in rete di nome OpenSSH. Vengono spiegate alcune delle possibili impostazioni del server OpenSSH e come modificarne la configurazione in Ubuntu.

OpenSSH è una versione libera della famiglia di protocolli e strumenti SSH (Secure SHell) per il controllo remoto di un computer o per il trasferimento di file tra computer. Gli strumenti tradizionali usati per svolgere queste funzioni, come telnet o rcp, sono insicuri e quando utilizzati trasmettono la password dell'utente in chiaro. OpenSSH fornisce un demone server e degli strumenti lato client per facilitare operazioni di controllo remoto e trasferimento di file in sicurezza e con crittografia, sostituendo in modo completo gli strumenti tradizionali.

Il componente server di OpenSSH, sshd, è in ascolto continuo per le connessioni in arrivo dei client, qualunque sia lo strumento usato sui client. Quando avviene una richiesta di connessione, per mezzo di sshd viene impostata la corretta connessione in base allo strumento utilizzato dal client. Per esempio, se il computer remoto sta effettuando una connessione con l'applicazione client ssh, il server OpenSSH imposta, dopo l'autenticazione, una sessione di controllo remoto. Se un utente remoto si connette a un server OpenSSH con scp, il demone server OpenSSH inizializza, dopo l'autenticazione, una procedura di copia sicura di file tra il server e il client. OpenSSH permette l'utilizzo di diversi metodi di autenticazione, inclusi password semplice, chiave pubblica e ticket Kerberos.

Installazione

L'installazione delle applicazioni server e client di OpenSSH è semplice. Per installare l'applicazione client OpenSSH sui sistemi Ubuntu, usare questo comando al prompt di un terminale:

sudo apt-get install openssh-client

Per installare l'applicazione server di OpenSSH e i relativi file di supporto, usare questo comando al prompt di un terminale:

sudo apt-get install openssh-server

È possibile scegliere di installare il pacchetto openssh-server durante il processo di installazione della Server Edition.

Configurazione

È possibile configurare il comportamento predefinito dell'applicazione server di OpenSSH, sshd, modificando il file /etc/ssh/sshd_config. Per maggiori informazioni riguardo le direttive di configurazione usate in questo file, consultare l'appropriata pagina di manuale inserendo, a un prompt di terminale, il seguente comando:

man sshd_config

All'interno del file di configurazione di sshd sono presenti diverse direttive per controllare impostazioni riguardo la comunicazione o i mezzi di autenticazione. Di seguito vengono riportati degli esempi di direttive di configurazione che è possibile modificare modificando il file /etc/ssh/sshd_config.

[Suggerimento]

Prima di modificare il file di configurazione, è consigliato fare una copia del file originale e proteggerla dalla scrittura, così da avere le impostazioni originali come riferimento ed eventualmente riusarle se necessario.

Copiare il file /etc/ssh/sshd_config e proteggerlo da scrittura, con il seguente comando, digitando a un prompt di terminale:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original
sudo chmod a-w /etc/ssh/sshd_config.original

Quelli che seguono sono esempi delle direttive di configurazione che è possibile cambiare:

  • Per impostare OpenSSH in modo da restare in ascolto sulla porta TCP 2222 invece che sulla predefinita porta TCP 22, cambiare la direttiva Port come segue:

    Port 2222

  • Per consentire l'utilizzo in sshd di credenziali di accesso basate su chiave pubblica, aggiungere o modificare la riga:

    PubkeyAuthentication yes

    Nel file /etc/ssh/sshd_config assicurarsi che la riga non sia commentata.

  • Per far sì che il server OpenSSH mostri il contenuto del file /etc/issue.net come un banner di pre-accesso, aggiungere o modificare la riga:

    Banner /etc/issue.net

    Nel file /etc/ssh/sshd_config.

Dopo aver apportato dei cambiamenti al file /etc/ssh/sshd_config, salvarlo e, per rendere effettivi i cambiamenti, riavviare il demone sshd usando il seguente comando:

sudo /etc/init.d/ssh restart
[Avvertimento]

Per poter adattare il comportamento dell'applicazione server alle proprie necessità, sono disponibili molte altre direttive di configurazione per sshd. Se però l'unico metodo per accedere a un server è ssh, è necessario prestare molta attenzione. Un qualsiasi errore nella configurazione di sshd attraverso /etc/ssh/sshd_config può precludere l'accesso al server dopo il suo riavvio oppure impedire l'avvio stesso di sshd a causa di una errata direttiva di configurazione. Perciò è necessaria molta attenzione nella modifica di questo file su un server remoto.

Chiavi SSH

Le chiavi SSH consentono l'autenticazione tra due host senza la necessità di una password. La'utenticazione con chiave SSH utilizza due chiavi, una privata e una pubblica.

Per generare le chiavi, in un terminale, digitare:

ssh-keygen -t dsa

Vengono generate le chiavi usando un'autenticazione DSA. Durante questo processo viene chiesto di inserire un password, premere semplicemente Invio quando chiesto di creare la chiave.

La chiave pubblica viene salvata, in modo predefinito, nel file ~/.ssh/id_dsa.pub, mentre quella privata in ~/.ssh/id_dsa. Ora, copiare il file id_dsa.pub nell'host remoto e aggiungere il suo contenuto al file ~/.ssh/authorized_keys digitando:

ssh-copy-id NOME_UTENTE@HOST_REMOTO

Infine, controllare i permessi del file authorized_keys: solo l'utente autenticato dovrebbe avere i permessi di lettura e scrittura. Nel caso non fossero corretti, modificarli:

chmod 644 .ssh/authorized_keys

Dovrebbe essere possibile ora collegarsi via SSH all'host senza l'utilizzo di una password.