Du er her: Hjem --> Annet --> Blog --> Sette opp Synology rsync over ssh

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.

scp v8 bruker sftp and the -O option DSM7

Oppdatering februar-2025. Jeg satte opp en ny Synology med DSM7. ssh til synology fungerte. Det fungerte ikke å scp filer til eller fra synology. Viste seg at scp8 bruker sftp for filoverføring. På synology var sftp aktivert. Det fungerte allikevel ikke. Viste seg at man må ha med et -O (bokstaven stor o, ikke tallet 0) fordi da benytter scp legacy overføringsprotokoll, dvs scp og ikke sftp.

Hvis man enablet sftp server på synologyen forsvant en av scp feilmeldingene. men filen ble fortsatt ikke kopiert. virker som det er en feil i scp for ssh versjon9. man må gå ned til den gamle versjonen for at det skal fungere. med -O opsjonen. da behøver man heller ikke aktivere sftp serveren.

C:\Users\tusr>scp -vO xyz.txt admin@192.168.1.2:/ttmp/

I'm having similar issues but only with SCP version 8. In my case this is from Alma Linux 9 (to DSM 7.1.1). I think it's because scp now favors SFTP instead of the scp file transfer. With scp 8 they introduced a new option -O (capital letter o) to force using the legacy file transfer method. What is strange is that I have both ssh and sftp enabled on Synology but the Synology SCP server (SSH server I guess) will not use SFTP. I have another problem because it is Virtualmin (on Alma Linux 9.1) that invokes SCP. I can ask it to use the -O option but it also uses it in SSH where -O is not a valid option! Reading the RedHat and OpenSSH blogs it appears that SCP is considered past its use by date and SFTP is the way forward. May 06, 2023. Just to clarify - in my case SCP from Centos 7.9, Alma Linux 8.7 works just fine. The problem started with Alma Linux (or any RedHat) version 9 that uses the newer SSH package.

Try -O as an option in your scp cmd i.e. scp -p -O -P 29418 genzola@192.168.0.122:/hooks/msg "jyei-erp/.git/hooks/" Here is the documentation for the -O option: -O Use the legacy SCP protocol for file transfers instead of the SFTP protocol. Forcing the use of the SCP protocol may be necessary for servers that do not implement SFTP, for backwards‐compatibility for particular filename wildcard patterns and for expanding paths with a ~ prefix for older SFTP servers.

Oppsummering

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.

Aktivering av SSH på Synology. Aktivering av SSH 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>

Vi ser at vi får autentisert over ssh. Men vi får den samme "Permission denied" feilen.

På Synolgy kan vi finne hvor rsync er instsallert ved å gjøre 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. 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

  1. DSM5.1 => rsync: Permission denied
    https://forum.synology.com/enu/viewtopic.php?t=92627
  2. DSM6 and RSync
    https://forum.synology.com/enu/viewtopic.php?t=117169
Telefon: 67 20 71 21 / 92 60 51 57 Synology DS1815plus