## 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

Nel file di configurazione di sshd sono presenti molte direttive per controllare le impostazioni di comunicazione e le modalità di autenticazione. Di seguito sono riportati degli esempi di direttive di configurazione che possono essere cambiate modificando il file `/etc/ssh/ssh_config`.

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, rendere effettivi i cambiamenti, riavviare il demone sshd usando il seguente comando a un prompt di terminale:

    sudo /etc/init.d/ssh restart

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.

In modo predefinito, la chiave pubblica è salvata nel file `~/.ssh/id_dsa.pub`, mentre `~/.ssh/id_dsa` è la chiave privata. Copiare il file `id_dsa.pub` nell'host remoto e aggiungerlo a `~/.ssh/authorized_keys2`:

    cat id_dsa.pub >> .ssh/authorized_keys2

Infine, controllare i permessi del file `authorized_keys2`, solo l'utente autenticato dovrebbe avere i permessi in scrittura e lettura. Nel caso in cui tali permessi non fossero corretti, modificarli:

    chmod 644 .ssh/authorized_keys2

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

### Riferimenti

Sito web di OpenSSH

Pagina wiki di OpenSSH avanzato

Capitolo 5. Amministrazione remota |  | eBox