Portachiavi

Guida alla configurazione di Raspberry Pi per utilizzare l'autenticazione con chiave SSH con l'applicazione RaspController

L’app RaspController dispone di un portachiavi che può contenere tutte le chiavi generate tramite l’applicazione stessa oppure tramite Raspberry Pi con il comando ssh-keygen.

È possibile accedere al portachiavi direttamente tramite le impostazioni dell’applicazione oppure durante la configurazione/modifica di un nuovo dispositivo.

RaspController keychain

Android

RaspController - Keychain

iOS

Come generare chiavi SSH con RaspController

Premi il pulsante “+” sul portachiavi per aggiungere una nuova chiave.

Ora, tramite la scheda “Genera”, inserisci il nome della chiave (facoltativo, ma utile per riconoscere le chiavi quando ce ne sono molte), seleziona il tipo di chiave ED25519 (consigliata), ECDSA o RSA e la sua dimensione, infine inserisci una passphare per crittografare la chiave (facoltativo, ma consigliato per proteggere la chiave).

A questo punto è possibile generare la coppia di chiavi (pubblica e privata). La chiave privata verrà utilizzata da RaspController, mentre la chiave pubblica dovrà essere copiata sul Raspberry Pi.

 

Per portare la chiave pubblica sul Raspberry Pi ci sono tre modi:

– Invia chiave pubblica al Raspberry Pi: accoda la chiave al file ~/.ssh/authorized_keys di un Raspberry Pi già presente nell’elenco dei dispositivi, a cui ci si collega già in altro modo (per esempio con la password). È il modo più rapido, perché non richiede nessuna operazione manuale sul Raspberry Pi. Le chiavi già autorizzate non vengono toccate, e la chiave vale solo per l’utente con cui quel dispositivo si collega.

– Esporta chiave pubblica su file: salva la chiave in un file .pub sul telefono o sul tablet, da copiare poi a mano sul Raspberry Pi (è necessario autorizzare la chiave sul server).

– Condividi chiave pubblica: apre il menu di condivisione di Android o iOS per mandare la chiave dove serve: e-mail, cloud, un altro computer (è necessario autorizzare la chiave sul server).

RaspController - Generate key pair
RaspController - Export public key

Android

RaspController - Generate key pair
RaspController - Export SSH key

iOS

Come generare chiavi SSH con Raspberry Pi

Per generare una nuova chiave SSH di tipo Ed25519 digita il seguente comando nel terminale Raspberry Pi:

ssh-keygen -t ed25519

conferma il nome del file con INVIO e inserisci una passphrase (raccomandata).

Per le chiavi di tipo RSA:

ssh-keygen -t rsa

Per le chiavi di tipo ECDSA:

ssh-keygen -t ecdsa

Dopo aver generato la coppia di chiavi continua con la configurazione del client SSH.

Installazione della chiave pubblica sul server

Crea la cartella .ssh nella tua home, se non c’è già. L’opzione -p evita l’errore nel caso la cartella esista.
[Per tastiere con layout italiano “~” si scrive con Alt Gr + ì]
mkdir -p ~/.ssh

Rendi la cartella leggibile e scrivibile solo dal tuo utente.
È obbligatorio: se altri utenti possono scriverci, SSH per sicurezza ignora le chiavi che contiene e l’accesso continua a non funzionare.
chmod 700 ~/.ssh

Aggiungi la riga della tua chiave pubblica (nome_chiave.pub) all’elenco delle chiavi autorizzate ad accedere a questo utente.
ATTENZIONE: >> aggiunge in fondo al file. Con un solo > cancelleresti tutte le chiavi già autorizzate, sostituendole con questa.
cat ~/nome_chiave.pub >> ~/.ssh/authorized_keys

Rendi l’elenco leggibile e scrivibile solo dal tuo utente.
Come per la cartella, senza questo permesso SSH scarta le chiavi.
chmod 600 ~/.ssh/authorized_keys

La chiave è disponibile immediatamente.

Vecchio metodo (obsoleto)

 

Modifica il file ‘sshd_config’:
sudo nano /etc/ssh/sshd_config

modifica la riga ‘AuthorizedKeysFile’ rimuovendo il simbolo # (se presente) e aggiungendo:
.ssh/nome_chiave.pub

Salva il contenuto del file premendo CTRL + X (per uscire da nano), rispondi “Si” alla richiesta di salvataggio, quindi conferma con INVIO.

Ora riavvia il servizio ssh oppure riavvia Raspberry Pi:>
sudo /etc/init.d/ssh restart

Uso della chiave su RaspController

Quando si configura un dispositivo, è possibile utilizzare la password o la chiave privata per l’autenticazione.

Per associare una chiave privata al dispositivo, premere il pulsante con l’icona della chiave, verrà visualizzato il portachiavi. È possibile selezionare una chiave esistente, generare una coppia di chiavi oppure importare una chiave generata con Raspberry Pi.

Ricordati di inserire anche la password sudo, necessaria per installare i pacchetti richiesti da RaspController.

RaspController - Device configuration

Android

RaspController - Device configuration

iOS

Come importare chiavi SSH generate con Raspberry Pi

Nel portachiavi premi il tasto “+” per aggiungere una nuova chiave, quindi seleziona la scheda “Importa”.

Inserisci il nome della chiave (facoltativo ma utile per identificarla).

È possibile importare la chiave privata selezionando un file oppure è possibile incollare il contenuto della chiave toccando a lungo la casella di testo e selezionando “Incolla” nel menu visualizzato.

Se lo desideri, puoi anche importare la chiave pubblica (facoltativo, non necessario per il corretto funzionamento).

Infine inserisci la passphrase utilizzata per crittografare la chiave (lascia vuoto se non è stata utilizzata alcuna passphrase).

Dopo aver salvato, la chiave viene aggiunta al portachiavi. Ora puoi associarla a un dispositivo.

RaspController - Import SSH key

Android

RaspController - Add SSH Key

iOS

Per un utente aggiunto a mano in seguito

Rimuovi la richiesta di password da questo utente.

Crea un file sudoers personalizzato utilizzando (sostituisci bob con il tuo utente):

sudo visudo -f /etc/sudoers.d/010_bob-nopasswd

Inserisci il seguente contenuto su una singola riga:

bob ALL=(ALL) NOPASSWD: ALL

Salva il file ed esci.

Solo per utente root

L’accesso di root con chiave è consentito dalla configurazione predefinita di OpenSSH (“PermitRootLogin prohibit-password”), con “PermitRootLogin no” in sshd_config la procedura fallisce.