SFTP op Synology met key file


Stel je wil FileTransfer beveiligen op je Synology NAS, dan kan dat natuurlijk middels username en password. Je kunt echter ook gebruik maken van SFTP met key files.

Wel is het van belang dat je ECSDA keys gebruikt. Aan de cliënt kant, genereer je een key.

ssh-keygen -t ecdsa 

In de output zie je het pad naar je public key. De inhoud van deze id_ecdsa.pub key heb je nodig om straks toe te voegen aan de Authorized Keys aan de Synology kant.

cat /home/basilicum/.ssh/id_ecdsa.pub

Vervolgens kun je het sftp account aanmaken op je Synology. Daarbij is alles standaard, behalve op het tabblad Toepassingsrechten. Hier moet je FTP toestaan, daarvalt SFTP namelijk ook onder.

Controleer dat zowel SSH als SFTP aan staan. SSH vind je onder Terminal en SNMP in het Configuratiescherm. Een simpel vinkje doet de truc.

SFTP vind je bij Bestandservices en wel op het tabblad FTP. Ook hier is een vinkje genoeg om de service te activeren. Op dat zelfde tabblad moet je echter ook nog via de knop Geavanceerde instellingen de Gebruikersbasismap wijzigen!

Selecteer je zojuist aangemaakte (of reeds bestaande) gebruiker en pas toe dat deze een persoonlijke basismap krijgt.

SSH als de aangemaakte gebruiker naar de NAS, let op sinds een update van DSM is het enkel aan administrators toevertrouwd om een SSH verbinding te maken. Maak de gebruiker tijdelijk lid van deze groep!

Dan is het tijd om enkele rechtenaanpassingen te doen binnen de homedirectory van je sftp account.

chmod 700 /var/services/homes/sftpaccount
chmod 700 ~
mkdir ~/.ssh
chmod 700 ~/.ssh/

Nu moeten we middels een editor de eerder gegenereerde public key toevoegen aan de authorized_keys file van ons sftpaccount.

vim ~/.ssh/authorized_keys

Daarna dien je een CHMOD te doen op deze authorized_keys.

chmod 600 ~/.ssh/authorized_keys

Het is nu tijd om de administrator rechten van het sftp account teniet te doen.

Bij de eerste keer dat je vanaf het client-systeem de verbinding opzet naar de synology, krijgt je nog de vraag of je de key van de host waar je mee verbindt, wil accepteren. Daarmee komt deze in je known_hosts. Dit is in feite aan je cliënt om dit te doen.

Bij deze gebruik je de aanwezige keys voor authenticatie en heb je de wachtwoorden niet meer nodig.