howto enable ssh on connect to rsync daemon

Hans Eric Sandström hes at xinit.se
Thu Oct 9 18:31:31 EST 2003


----- Original Message ----- 
From: " wilma " <wilma2002 at spray.se>
To: <rsync at lists.samba.org>
Sent: Thursday, October 09, 2003 9:49 AM
Subject: howto enable ssh on connect to rsync daemon


Hi,
I'm trying to setup automatic sync of files over SSH from node2 to node1.
node2 is the "server" and node1 is the "client".
I have setup rsync like this on the nodes which runs AIX (4.3.3 and 5.1):
--

Short answer in english (RTFM) and also RTFFAQ especially on how to use rsa
key authorization with ssh.

-- Howto setup ssh key authentication (In swedish):

Steg 1-5 är inte nödvändiga. Dvs du behöver ingen rsync demon om du avser
använda ssh.
Om du däremot vill använda ssh utan lösenord så måste du generera en nyckel på
client maskinen. Detta har inte med rsync att göra utan är för att sätta upp
ett "trust relationship with shared secret" mellan två maskiner. Trust
förhållandet baseras på att servern har tillgång till klientens publika nyckel
och så länge du inte slarvar med den hemliga nyckeln som ligger kvar på
klienten så är detta säkert.

Har själv satt upp detta för några år sedan 1998 tror jag på en AIX 4.3 maskin
på finansinspektionen.

Gör såhär:
node1# ssh-keygen -t rsa
(Ingen passphrase om du inte vill ha nån password fråga)

Kopiera sedan den publika delen av nyckeln till servern (node2).
node1#scp .ssh/id_rsa.pub node2:.ssh/id_rsa_node2.pub

Gå sedan in på servern och skapa en authorized_keys fil. Om du inte har nån
sån redan kan du helt enkelt döpa om filen id_rsa_node2.pub till
authorized_keys:
node2#cd .ssh
node2#cat id_rsa_node2.pub >>authorized_keys

Nu komer du att kunna köra kommandon på node2 från node1 utan lösenord. Detta
är lite väl öppet. Om du vill ha det säkrare måste du skapa ett script på
node2 som endast kör rsync på de filer du avser kopiera. Skapa följande script
på node2:
/usr/local/bin/node2-rsyncserver:
#!/bin/sh
rsync --server --sender -a --delete -- /path/to/resource

Ändra sedan i authorized_keys så att endast scriptet
/usr/local/bin/node2-rsyncserver får köras från node1. Följande rad skall
läggas till efter nyckeln:
command="/usr/local/bin/node2-rsyncserver"

Kom sedan ihåg att säkerheten helt bygger på att den hemliga delen av nyckel
är skyddad. Att ha hemmabibliotek på tex nfs servers sabbar tex detta skydd.
Man kan använda samma hemliga nyckel på flera klienter men jag föredrar nog
att ha en nyckel för varje klient. Det underlättar om man vill stänga av en
klient senare. Det är bara att ta bort nyckeln från authorized_keys filen.

Om du sedan vill kunna köra nåt annat kommando (med lösenord) föreslår jag att
du döper om den hemliga nycken till nåt annat och kör sedan ssh kommandot från
klienten på följande sätt:
rsync --rsh="ssh -i id_rsa_rsync" osv.

mvh

Hans Eric








More information about the rsync mailing list