I NAS Synology consentono il collegamento via terminale tramite ssh e per farlo è necessario abilitare il servizio:

Pannello di Controllo > Terminale e SNMP > Attiva Servizo SSH

Synology NAS - Pannello di controllo

La porta standard è la 22, se ne consiglia però la personalizzazione con una differente.

Utilizzo i seguenti dati:

  • client: Macbook Pro
  • server: Synology NAS con DSM 6.2.4
  • username: paperino
  • indirizzo ip del server: 192.168.0.2
  • porta ssh del server: 22

Per connettersi tramite terminale dal client è necessario utilizzare la sintassi ssh -p numero_della_porta username@indirizzo_ip, quindi:

ssh -p 22 [email protected]

Viene richiesto a questo punto l'inserimento della password per l'utente paperino e la connessione al server dovrebbe essere stabilita.

È chiaro quindi che ogni volta si voglia connettersi mediante SSH al server remoto è necessario inserire la password ma questo, oltre ad essere molto scomodo soprattutto se viene utilizzata una password robusta, non è il massimo in termini di sicurezza.

E allora? E allora autenticazione a chiave pubblica.

L'utilizzo dell'autenticazione a chiave pubblica SSH per connettersi a un sistema remoto è un'alternativa solida e più sicura dell'accesso mediante password o passphrase. L'autenticazione a chiave pubblica SSH si basa su algoritmi crittografici asimmetrici che generano una coppia di chiavi, una privata e l'altra pubblica.

La chiave privata, di solito denominata id_rsa, è memorizzata sul client. Questa dovrebbe essere tenuta al sicuro, con le autorizzazioni debitamente impostate in modo che nessun altro utente sul computer possa leggere il file.

La chiave pubblica, solitamente denominata id_rsa.pub, è invece posizionata sul server remoto a cui si intende accedere. Questa può essere condivisa liberamente con chiunque.

Generarla è molto semplice:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_paperino

Dove ssh-keygen è il componente della suite Secure Shell dedicato alla generazione delle chiavi, -t rsa è la tipologia di algoritmo di firma digitale scelto, -b 4096 i bits e -f ~/.ssh/id_rsa_paperino il file di input. Rimando a ssh.com per maggiori specifiche.

Vengono generati due file all’interno del path ~/.ssh/, ovvero id_rsa_paperino e id_rsa_paperino.pub, dove il primo è la chiave privata da conservare all’interno del client e il secondo quella pubblica che, come detto, va inviata al server in questo modo:

ssh-copy-id -f -i ~/.ssh/id_rsa_paperino.pub [email protected] -p 22

Dove ssh-copy-id è il componente dedicato all'installazione delle chiave sul server, -f ne forza la copia anche se questa è già installata, -i ~/.ssh/id_rsa_paperino.pub indica quale chiave copiare e [email protected] -p 22 si connette al server su cui la si vuole copiare.

Tecnicamente questi passaggi sarebbero già sufficenti, se non fosse che di default il server NAS Synology non è abilitato per la connessione SSH a chiave pubblica. Per abilitarlo ci si collega via SSH con l'inserimento della password:

ssh -p 22 [email protected]

Io utlizzo l'editor nano, ma è utilizzabile qualunque editor:

sudo nano /etc/ssh/sshd_config

de commentare le righe PubkeyAuthentication yes e AuthorizedKeysFile .ssh/authorized_keys.

Passaggio fondamentale è quello dedicato all'essegnazione dei giusti permessi.

Sul server:

sudo chmod 755 .
sudo chmod 755 ~/.ssh
sudo chmod 644 ~/.ssh/authorized_keys

Sul client:

sudo chmod -R 755 ~/.ssh
sudo chmod -R 600 ~/.ssh/*

Riavviare il servizio sul server:

synoservicectl --restart sshd

oppure disabilitare e riabilitare il servizio SSH in Pannello di controllo > Terminale e SNMP

Aggiungere la nuova chiave all'ssh-agent:

eval "$(ssh-agent -s)"

Aggiungere la chiave alla keychain usando il comando:

ssh-add -K ~/.ssh/id_rsa_paperino

Questo dovrebbe essere sufficiente per potersi collegare via SSH senza inserire la password e in modo sicuro:

ssh [email protected] -p 22 -i ~/.ssh/id_rsa_paperino

Per rendere la procedura di connessione sensibilmente più snella consiglio la creazione di un alias (rimando a DuckDuckGo se non si conosce l'argomento), qualcosa del tipo:

alias sshsynonas="ssh [email protected] -p 22 -i ~/.ssh/id_rsa_paperino"

Per connettersi sarà sufficiente dare il comando:

sshsynonas