A bejegyzés nem az én szellemi termékem, a dicsőség Laurenz-et illeti aki a blogjában írta le a menetét, én csak magyarra átültettem azt. Nem pontos fordítást készítettem ,de azért remélem a lényegét nem veszti el. Természetesen engedélyt is kértem arra, hogy lefordíthassam, ami meg is adatott.
Mielőtt belevágnál: semmilyen felelősséget nem vállalok azért, ha esetleg bármilyen hiba felmerülne a művelet közben, csak saját felelősségre vágj bele! Ha teheted próbáld ki előbb virtuális DSM-en, és ha működik csak akkor csináld meg az éles rendszeren is. Amennyiben úgy döntessz, hogy belevágsz arra érdemes felkészülni, hogy hírek szerint Synology-ék nem szeretik ha Entware-t telepítessz és akár a támogatást is megtagadhatják [link], ezért ezt is vedd figyelembe!
Elöljáróban még annyit tennék hozzá, hogy nem szakmám az informatika, és linuxban is max. lelkes amatőri címre pályáznék, így előfordulhatnak fogalmi zavarok a részemről, de igyekeztem mindent magyarul leírni. Amennyiben megjegyzésed lenne a szöveggel (vagy a helyesírással )kapcsolatban, kérlek jelezd privátban, én pedig igyekszem majd mihamarabb kijavítani azt. Mivel szerintem az a legcélszerűbb ha minden synology-val kapcsolatos információ a fórumban gyűlik, így a hozzászólásokat nem engedélyeztem a bejegyzés alatt.
-------------------------------------------------------------------------------------------------------------------------------------------------
A 6-os Synology DSM ugyan engedélyezi az SSH hozzáférést, de kizárólag az admin csoport tagjainak. Ezen szimplán GUI-ból, de még SSH alól sem lehet változtatni. Synology-ék egy teljesen átírt OpenSSH-t használnak a nasokon. Ezen pedig csak úgy segíthetünk ha mi magunk telepítünk egy OpenSSH szervert és ennek a szervernek a konfig fájljait módosítjuk, majd az így módosított OpenSSH szerverre már be tudunk lépni nem admin jogú felhasználóval is. Van több lehetséges módja is ennek (pl.), azonban a legegyszerűbbet fogom bemutatni, nevezetesen az openssh-server-pam csomag telepítését Optware / Entware csomagforrás használatával.
Ahhoz, hogy az Optware vagy Entware csomagkezelőt fel tudjuk telepíteni a NAS-ra, a Csomagkezelési központ beállításaiban fel kell vennünk csomagforrásként a https://cphub.net
-et:
Csomagkezelési központ >> Beállítások fül >> Csomagforrások fül >> Hozzáadás
Név: CPHub (de bármi lehet)
Hely: https://cphub.net
Ok >> Ok
Amint mentettük a Csomagkezelési központ Közösség felületén egy frissítést nyomva meg kell keresnünk az Easy Bootstrap Installer csomagot amit telepítenünk kell. Amennyiben az Entware-t választjuk, akkor csak okézunk mindent és települ is.
Miután végeztünk a telepítéssel engedélyezzük a NAS-on az SSH és TELNET szolgáltatást:
Vezérlőpult >> Terminál és SNMP >> SSH és TELNET szolgáltatások engedélyezése: pipa
Lépjünk be az admin (nem kell az alapértelmezett adminnak lennie) felhasználónkkal SSH-n keresztül a NAS-unkra, majd frissítsük a frissen telepített csomagforrásunkat és telepítsük az openSSH server csomagot:
ssh adminfelhasználó@nasunk.ip.címe
>> pl. tomi@192.168.1.45, ahol tomi az admin jogú felhasználónk, a nasunk ip címe pedig 192.168.1.45).
adjuk meg a jelszavunkat.
Entware frissítése:
sudo /opt/bin/opkg update
OpenSSH szerver telepítése:
sudo /opt/bin/opkg install openssh-server-pam
Miután telepítettük a csomagot, szerkesztenünk kell a rendszer /etc/passwd
, /etc/group
és az /etc/ssh/sshd_config
fájlokat.
(Megjegyzés: a nas-on alapból SSH alatt csak a vi
szerkesztő érhető el. Amennyiben kényelmetlenül érezzük magunkat a használatával, akkor telepíthetjük a nano
szerkesztőt is a https://packages.synocommunity.com
csomagforrás hozzáadásával, ahonnan a SynoCli File Tools csomag telepítésével megkapjuk többek között a nano
szövegszerkesztőt is.)
Először is mentsük a passwd fájlunkat:
sudo cp /etc/passwd /etc/passwd_orig
Majd az /etc/passwd
fájlhoz felveszünk egy sshd nevű felhasználót:
echo 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
' | sudo tee -a /etc/passwd
>> ezt a két sort egy másolással illesszük be a terminálba
Megengedjük a nem admin felhasználónknak, hogy bejelentkezhessen, ehhez szerkesztjük az /etc/passwd
fájlt:
sudo vi /etc/passwd
>> kikeressük a nem admin felhasználónkat, majd a sorvégi /sbin/nologin
-t lecseréljük /bin/sh
-ra
Létrehozzuk az sshd csoportot, persze előbb mentjük az eredeti fájlt:
sudo cp /etc/group /etc/group_orig
>> ez menti
echo 'sshd:x:74:' | sudo tee -a /etc/group
>> ez létrehozza
Annak a megengedése, hogy az új SSH szerver (sshd) használhassa az eredeti hoszt SSH kulcsait: (természetesen először mentjük az eredeti fájlt)
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
>> ment
sudo sed -i 's/#HostKey /HostKey /g' /etc/ssh/sshd_config
>> engedélyez
Az újonnan létrehozott SSH szerver konfigfájl linkelése az eredeti konfigfájl helyére:
sudo mv /opt/etc/ssh/sshd_config /opt/etc/ssh/sshd_config.orig
sudo ln -s /etc/ssh/sshd_config /opt/etc/ssh/sshd_config
Nézzük meg, hogy működik-e. Válasszunk ki egy szabad portot, állítsuk be ,majd azon keresztül csatlakozzunk a nem admin felhasznmálónkkal.
sudo /opt/sbin/sshd -p 22000
ssh nemadminfelhasználó@nas.ip.címe -p 22000
Ha minden jól ment és sikerült a belépés, jöhet az izzasztóbb rész, azaz az sshd bináris cseréje a régiről az újra. Ehhez be kell majd TELNET-eznünk a NAS-unkba, leállítani minden olyan szolgáltatást ami az sshd-hez kapcsolódik, majd jöhet a bináris csere. Azaz:
TELNET-el belépünk:
telnet nas.ip.címe
>> admin felhasználóval lépünk be
Leállítjuk az sshd szervízt és minden hozzákapcsolódó szolgáltatást:
sudo /sbin/initctl stop sshd
sudo killall sshd
A binárisok cseréje:
sudo cp /bin/sshd /bin/sshd.orig
sudo cp /opt/sbin/sshd /bin/sshd
Az sshd szervíz ujraindítása:
sudo /sbin/initctl start sshd
Logok ellenőrzése, hogy minden rendben zajlott-e:
sudo tail /var/log/upstart/sshd.log
Amennyiben minden jól ment, nincs más teendőnk mint az engedélyeket rendbe tenni, hogy rendben használni tudjuk.
ssh admin@nas.ip.címe
.ssh mappa létrehozása a nem admin felhasználónk számára:
cd /var/services/homes/nemadminfelhasználónkmappája
mkdir .ssh
A jogok és tulajdonos kiosztása:
sudo chmod 0700 .ssh
>> írási, olvasási, végrhajtható jog kiosztása a mappára
sudo chown -R nemadminfelhasználó:users .ssh
>> a tulajdonos megváltoztatása a nem admin felhasználóra
Amennyiben szeretnénk SSH kulcsokat is tárolni a felhasználónknál, másoljuk át a kulcsunkat, majd még egy-két engedély kiosztása után működni is fog a dolog.
SSH kulcs másolása arról a gépről amiről be szeretnénk majd lépni:
ssh-copy-id nemadminfelhasználó@nas.ip.címe
Lépjünk be a nem admin felhasználónkkal, majd változtassunk a jogosultságokon:
ssh nemadminfelhasználó@nas.ip.címe
>> még kérni fogja a jelszavunkat
Jogosultságok változtatása:
chmod 700 ~
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Amennyiben minden rendben zajlott, akkor újból belépve a nem admin felhasználónkkal most már nem fog jelszót kérni.
Ha esetleg valaki ki tudná próbálni DSM 7 alatt, hogy minden működik-e, megköszönném a visszajelzést. Illetve nem tudom, hogy ott is ugyanennyire korlátozva van-e az SSH, mint DSM 6 alatt, vagy esetleg ott már változtattak ezen...
Kiegészítés (1) >> Még annyival egészíteném ki, hogy mint ahogy a fórumban felmerült, kérdéses, hogy frissítés hatására mi is lesz a sorsa az itt részletezett változtatásnak, főleg annak tükrében, hogy már kapuban a 7-es DSM. Amint időm engedi ki fogom próbálni régebbi 6-os DSM-el (hogy legalább ezzel a kiadással legyen tapasztalat) is és egy következő kiegészítés keretében beszámolok a tapasztalataimról.
Kiegészítés (2) >> Kipróbáltam virtuális DSM alatt, hogy mi történik akkor, ha frissítjük a rendszert. Ezeket a DSM verziókat használtam:
6.1-15047 > erre a verzióra már nem tudtam feltenni az Entware féla openssh szervert, mert már oylan régi kiadás volt.
6.2-23739 > ez volt a kiinduló DSM verzió, minden beállítást el tudtam végezni, és a végén kaptam egy nem admin felhasználót aki be tudott jelentkezni ssh-n kersztül is akár ssh kulccsal.
6.2.2-24922 > egy dolgot leszámítva minden simán működött, első belépéskor a DSM-be nem kaptam hibaüzenetet semmiről. A probléma viszont az volt, hogy a nem admin felhasználó elvesztette az engedélyét arra, hogy ssh-n keresztül belépjen. Ezt az /etc/passwd
fájl módosításával korrigálni lehet:
ssh admin@nas.ip.címe
sudo vi /etc/passwd
>> kikeressük a nem admin felhasználónkat, majd a sorvégi /sbin/nologin
-t visszacseréljük /bin/sh
-ra
6.2.4-2556 > a legfrissebb DSM. Itt azért már nem ment olyan simán, mint az előbbi verzióváltáskor, az a megérzésem (sajnos elfelejtettem ellenőrizni), hogy a DSM-el együtt a synology openssh szervere is frissülhetett. A megoldás a nem admin felhasználó újbóli ssh belépés engedélyezésére a következők voltak:
1. Belépés ssh-n keresztül admin jogú felhasználóval:
ssh admin@nas.ip.címe
2. Az /etc/passwd
fájl korrigációja:
sudo vi /etc/passwd
>> kikeressük a nem admin felhasználónkat, majd a sorvégi /sbin/nologin
-t visszacseréljük /bin/sh
-ra
3. Kilépés az ssh-ból, majd belépés TELNET-en keresztül:
telnet nas.ip.címe
>> admin felhasználóval lépünk be
4. Leállítjuk az sshd szervízt és minden hozzákapcsolódó szolgáltatást:
sudo /sbin/initctl stop sshd
sudo killall sshd
5. A binárisok újbóli cseréje:
sudo cp /opt/sbin/sshd /bin/sshd
Az sshd szervíz ujraindítása:
sudo /sbin/initctl start sshd
Logok ellenőrzése, hogy minden rendben zajlott-e:
sudo tail /var/log/upstart/sshd.log
Amennyiben minden jónak tűnik kilépünk a TELNET-ből, majd megpróbálhatunk belépni a nem admin felhasználónkkal, remélhetőleg sikerrel.
A következő DSM 6-os frissítést követően érdemes lesz először szerintem az /etc/passwd
fájlt ellenőrizni, ha megint az /sbin/nologin
lett a nem admin felhasználó sorának vége azt megváltoztatni, és megpróbálni újból belépni vele. Amennyiben ez nem megoldás, akkor érdemes végrehajtanunk újból az sshd binárisok cseréjét.
DSM 7-es verzió: mivel még nem támogatottak a harmadik felektől származó csomagok, így nem tudtam kipróbálni, hogy működik-e. Amint lesz rá lehetőség, természetesen frissíteni fogom a bejegyzést.
Kiegészítés (3) >> Arra érdemes még figyelni, hogy ahogy észrevettem újraindításokkor is szívesen visszaállítja a DSM a nem admin felhasználó jogát /sbin/nologin
-ra, így újraindítások után ha nem menne a belépés, ellenőrizzük a felhasználónk jogát a belépésre az /etc/passwd
alatt.
Eredeti forrás: https://blog.laure.nz/2020/11/29/give-ssh-access-to-non-admin-synology-users/