Pro přístup k SYNOLOGY NAS pomocí SSH, bez zadávání hesla, jsem se nemohl dlouho dopracovat. Nakonec jsem našel řešení, které odstranilo zadávání hesla. Vše spočívalo ve správném nastavení práv k jednotlivým složkám.
Nastavení v DSM 7.2 – webový portál
- V Ovládacím panelu DSM 7.2 otevřeme Terminál a SNMP a povolíme službu SSH, případně změníme port služby SSH pro zvýšení bezpečnosti. Potvrdíme tlačítkem Uložit.
- V Ovládacím panelu otevřeme Uživatelé a skupiny, vybereme kartu Rozšířené a povolíme službu Složka uživatele. Potvrdíme tlačítkem Použít.
- Dále vytvoříme uživatele, pod kterým se budeme přihlašovat a přiřadíme ho do skupiny Administrátors.
Pro tento postup budu používat vytvořeného uživatele git
Generování klíčů a přenos veřejného klíče na Synology
Nejprve si na počítači, ze kterého budeme přistupovat k NAS, vygenerujeme ssh klíče zadáním příkazu v terminálu Windows nebo Powershell. Terminál nebo Powershell spouštíme jako běžný uživatel, ne jako Administrator.
$ ssh-keygen -t rsa
Na otázky pro cestu k uložení klíčů ponecháme výchozí hodnoty, to znamená, že vygenerované klíče se uloží do osobní složky uživatele na PC a v ní do podsložky .ssh.
Na otázku pro zadání hesla k soukromému klíče můžeme zadat heslo, ale to budeme muset zadávat při každém použití klíče, takže ho můžeme ponechat prázdné a dvakrát potvrdíme ENTER.
Po vygenerování klíčů máme ve složce uživatele na PC a v podsložce .ssh dva soubory id_rsa a id_rsa.pub. Na synology musíme přesunout pouze soubor id_rsa.pub. Pokud máme SSH klienta, můžeme to provést zadáním příkazu
# provádíme jako uživatel < git >
$ ssh-copy-id -i ~/.ssh/id_rsa.pub git@ip-adresa-synology
Při použití tohoto příkazu budeme ještě zadávat heslo. Tento příkaz nám na Synology vytvoří v osobní složce uživatele < git > podsložku .ssh a v ní soubor authorized_keys, do kterého nakopíruje obsah souboru id_rsa.pub. Pokud nemáme klienta SSH, použijeme následující postup.
Přihlásíme se k Synology přes webové rozhraní, ve složce uživatele < git > vytvoříme podsložku .ssh a do ní importujeme soubor id_rsa.pub
Nastavení z příkazového řádku
Následně se přihlásíme k Synology pomocí SSH jako uživatel < git >
# přihlášení jako uživatel git
$ ssh git@ip-adresa-synology
Zadáme heslo uživatele < git > a jako první nakopírujeme obsah id_rsa.pub do authorized_keys zadíním následujících příkazů
# přepneme se do složky .ssh uživatele git
$ cd ~/.ssh
# zapíšeme obsah id_rsa.pub do authorizek_keys
$ cat id_rsa.pub >> authorized_keys
# a odhlásíme se od Synology
$ exit
Nyní se přihlásíme k Synology pomocí SSH jako uživatel s právy pro správu
# přihlášenní pomocí SSH jako správce
$ ssh ucet-pro-spravu@ip-adresa-synology
Nejprve upravíme konfigurační soubor SSH služby. Já mám v Synology doinstalovaný editor nano, proto budu vše provádět přes něj. Kdo nemá, použije editor vim.
$ sudo nano /etc/ssh/sshd_config
V otevřeném konfiguračním souboru provedeme následující změny odkomentováním jednotlivých řádků nebo přepsáním konfiguračních parametrů. Nastavení jednotlivých parametrů je:
- odkomentovat řádek PubkeyAuthetication yes
- odkomentovat řádek AuthorizedKeysFile .ssh/authorized_keys
- zkontrolovat nastavení PasswordAuthentication yes , případně odkomentovat řádek
- zkontrolovat nastavení ChallengeResponseAuthentication no, případně odkomentovat řádek
- zkontrolovat nastavení UsePAM yes
- zkontrolovat nastavení AllowTcpForwarding no
- zkontrolovat nastavení ChrootDirectory none
Ostatní nastavení na konci konfiguračního souboru ponechat beze změn. Takto upravený konfigurační soubor uložíme a restartujeme službu ssh
# restartování služby SSH
$ sudo systemctl restart sshd
Dále nastavíme přístupová práva ke složkám uživatele < git >
# změň název uživatele a jeho složky podle skutečného názvu
# v příkladu použiju název <git>
$ chown git:users /volume1/homes/git/
$ chown git:users /volume1/homes/git/.ssh
$ chown git:users /volume1/homes/git/.ssh/authorized_keys
$ chmod 755 /volume1/homes/git/
$ chmod 700 /volume1/homes/git/.ssh
$ chmod 600 /volume1/homes/git/.ssh/authorized_keys
Po odhlášení od Synology jako uživatel pro správu se následně přihlásíme k Synology pomocí klíče zadáním příkazu ssh s parametry, kde -i je cesta k privátnímu klíči a -p je číslo portu, na kterém poslouchá služba SSH na Synology
$ ssh -i ~/.ssh/id_rsa -p 22 git@ip-adresa-synology
Nyní bychom už neměli vidět výzvu pro zadání hesla a mělibychom být připojeni. Pokud používáte na Synology Firewall, musíte provést jeho konfiguraci pro přístup k službě SSH.