Sette opp rsync over ssh på Synology
Vi har en ny Synology med DSM 6.2. Synology er GUI-basert, men inkluderer også et shell man kan SSH til. Et shell er en samling UNIX-kommandoer. For å kunne bruke shellet internaktivt må vi ha en terminal. I en terminal kan vi skrive input, eksempelvis for å kalle et program, og motta output. Tidligere var en terminal hardware - fysisk skjerm og keyboard. Idag er en terminal gjerne laget i software (virtuell terminal, emulator), og er "det sorte vinduet man kan skrive kommandoer i" på Mac og Linux maskiner. Terminalen sender input til shellet, og mottar output fra shellet for å vise det for brukeren. Reglene for strengsubstitusjon er i shellet. På Synology 5 var dette shellet BusyBox - en redusert versjon av UNIX-kommandoene som krever få ressurser. For eksempel eksisterte ikke /bin/bash, man kunne bare kjøre script med /bin/sh. Med DSM 6 ser dette ut til å være endret - nå er /bin/bash med.
Vi vil overføre filer til og fra maskinen med rsync, over ssh. På vår Windows arbeidsstasjon har vi installert Cygwin rsync og openssh klient. Vi har også ssh-klienten putty.
Oppsummering
- Aktiver SSH på Synology
- I tillegg må også rsync aktiveres på Synology.
Detaljert beskrivelse og feilsøking
Aktiver SSH på Synology: Control Panel - Terminal & SNMP - Terminal tab - Enable SSH service. Nå fungerer det å ssh inn til maskinen.
c:\00aa\winfolder>ssh admin@syno-ip-adresse
admin@syno-ip-adresse's password:
Could not chdir to home directory /var/services/homes/admin: No such file or directory
admin@syno01ot:/$
Informasjonsmeldingen om manglende home directory er fordi Synology er satt opp uten home-directory for brukerne. Dette kan endres om man ønsker. Vanligvis fungerer rsync over ssh etter at ssh er satt opp. Men ikke på Synology.
Det fungerer å overføre filer med scp.
:\00aa\winfolder>scp heifile01.txt admin@syno-ip-adresse:/volume1/synofolder/
admin@syno-ip-adresse's password:
Could not chdir to home directory /var/services/homes/admin: No such file or directory
heifile01.txt 100% 22 0.0KB/s 00:00
Å overføre med rsync fungerer ikke.
c:\00aa\winfolder>rsync -a heifile01.txt admin@syno-ip-adresse:/volume1/synofolder/
admin@syno-ip-adresse's password:
Permission denied, please try again.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]
"Permission denied" - det er sannsynligvis ikke en feil med rettighetene til folderen, fordi brukeren vår kan kopiere filer, slettes osv over smb og scp. Så det er sannsynligvis noe med rsync.
Det fungerer å kopiere med rsync andre veien - fra Synology til min Windows arbeidsstasjon.
Det fungerer å kjøre kommandoer på Synologyen over ssh.
c:\00aa\winfolder>ssh admin@syno-ip-adresse "whoami;echo ----Dette er en liste over filer i----;pwd; echo ----katalogen----;
admin@syno-ip-adresse's password:
Could not chdir to home directory /var/services/homes/admin: No such file or directory
admin
----Dette er en liste over filer i----
/
----katalogen----
bin
config
dev
etc
etc.defaults
initrd
lib
Det fungerer ikke å kjøre rsync-kommando over ssh.
c:\00aa\winfolder>ssh admin@syno-ip-adresse "rsync"
admin@syno-ip-adresse's password:
Permission denied, please try again.
Vi legger til et flagg -e i rsync-kommandoen slik at vi kan spesifisere parametre til ssh. Parametren -v angir verbose mode, slik at infomeldinger skrives ut.
c:\00aa\winfolder>rsync -a -e "ssh -v" heifile01.txt admin@syno-ip-adresse:/volume1/synofolder/
OpenSSH_7.2p2, OpenSSL 1.0.2h 3 May 2016
debug1: Connecting to syno-ip-adresse [syno-ip-adresse] port 22.
debug1: Connection established.
...alt ok så langt...
debug1: Next authentication method: password
admin@syno-ip-adresse's password:
debug1: Authentication succeeded (password).
Authenticated to syno-ip-adresse ([syno-ip-adresse]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending command: rsync --server -logDtpre.iLsfxC . /volume1/synofolder/
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
Permission denied, please try again.
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2188, received 2760 bytes, in 0.1 seconds
Bytes per second: sent 27965.5, received 35276.4
debug1: Exit status 1
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.2]
c:\00aa\winfolder>
find / -name "*rsync*"
På min DSM 6.2 er rsync installert som /usr/bin/rsync
-rwsr-xr-x 1 root root 541760 Jul 3 16:13 rsync
Vi ser at brukeren root eier filen og har rw rettigheter. root har også rettigheter til å kjøre filen, selv om ikke x er med: rettigheten setuid (s) er med, det betyr at root kan kjøre filen. Vi ser også at både root-gruppen og alle andre kan kjøre filen - begge har x i posisjon 3. Vanligvis vil programmet som kjøres ha samme rettigheter i filsystemet som den som kjører det. Men når setuid er satt er dette annerledes - programmet har root rettigheter i filsystemet selv når det kjøres av en annen bruker enn root. En tilfeldig bruker kan kjøre rsync fordi "everybody else" har x. Når dette skjer kjører programmet med rettighetene til root i filsystemet. Hvis vi angir eksakt path til rsync, fungerer det. Filen blir kopiert over.
c:\00aa\winfolder>rsync -a --rsync-path="/usr/bin/rsync" heifile01.txt admin@syno-ip-adresse:/volume1/synofolder/
admin@syno-ip-adresse's password:
Could not chdir to home directory /var/services/homes/admin: No such file or directory
c:\00aa\winfolder>
Det viser seg at det er en setting på Synology som må velges for at det skal fungerer uten å måtte oppgi eksakt path: Control Panel - File Services - rsync tab - Enable rsync service (skal være valgt)
Aktivering av rsync på Synology
Nå fungerer det uten å måtte angi eksakt path:
c:\00aa\winfolder>rsync -a heifile01.txt admin@syno-ip-adresse:/volume1/synofolder/
admin@syno-ip-adresse's password:
Could not chdir to home directory /var/services/homes/admin: No such file or directory
c:\00aa\winfolder>
Referanser
- DSM5.1 => rsync: Permission denied
https://forum.synology.com/enu/viewtopic.php?t=92627
- DSM6 and RSync
https://forum.synology.com/enu/viewtopic.php?t=117169