Detta är genomlysning av ett sätt att skapa tidsstyrda arbetsuppgifter på fjärran maskiner, när dessa skall igångsättas på uppdrag av en annan maskin och då de skall nyttja kryptering för åtkomst. Till åskådning väljer jag ett rsync-uppdrag, eftersom ett sådant var det ursprungliga syftet i mitt eget nätverk. Det finns en förutsättning: Målmaskinen måste nyttja "sshd", att bara utnyttja "dropbear" duger inte. 1) Skapa en filkatalog och kryptonycklar: $ mkdir ~/.cron/ $ ssh-keygen -b 1024 -t rsa -f ~/.cron/rsync-fjaerran.rsa Lämna lösenmeningen tom, eftersom överföringen skall kunna genomföras utan mänskligt ingripande. 2) Skapa på den fjärran maskinen en förberedande grundsten: $ ssh jag@fjaerran mkdir ~/.cron/ $ scp ~/.cron/rsync-fjaerran.rsa.pub jag@fjaerran:~/.cron/ 3) Skapa på den nära arbetsmaskinen ett arbetsprogram: $ cat > ~/.cron/rsync-till-fjaerran.sh <<-SLUT #!/bin/sh # # .cron/rsync-till-fjaerran.sh # RSYNC=$(which rsync) SSH=$(which ssh) NYCKEL=~/.cron/rsync-fjaerran.rsa $RSYNC -Ca -e "$SSH -i $NYCKEL" \ /home/mitt/arkiv/ jag@fjaerran:/home/annat/arkiv/ logger -p user.info -t rsync \ "Skickade lokalt arkiv till centrallagret." SLUT $ chmod u+x ~/.cron/rsync-till-fjaerran.sh Detta lilla program speglar det lokala arkivet "/home/mitt/arkiv/" in i centralarkivet "/home/annat/arkiv/" på den fjärran maskinen. 4) Inrätta den kringskurna tjänsten på "fjaerran". Gå först till den avlägsna maskinen: $ ssh jag@fjaerran Härnäst skall filen ".cron/rsync-fjaerran.rsa.pub" inlemmas i "~/.cron/authorized_keys". Två korta sätt att göra detta: $ echo -e "r .cron/rsync-fjaerran.rsa.pub\nwq" | \ ed -s .ssh/authorized_keys $ sed -i -e "$ r .cron/rsync-fjaerran.rsa.pub" \ .ssh/authorized_keys (Det andra sättet är odugligt i OpenBSD, men båda duger i GNU/Linux och FreeBSD.) Emellertid måste tillskottet ändras något för att avgränsa möjligheterna till missbruk. Det är här den fulla sshd-tjänsten spelar in. Filen "rsync-fjaerran.rsa.pub" innehåller en enda rad liknande ssh-rsa AAAAB3Nza... mitt@naermaskin Letta fram motsvarande rad i ".ssh/authorized_keys" och lägg till en ordergivning i radens början, varvid första mellanslaget kommer före det gamla märket "ssh-rsa". Var noga med anföringstecknen. Filen "~/.cron/granska-rsync" skall snart skapas. from="192.168.111.1",command="/home/annat/.cron/granska-rsync",no-pty ssh-rsa Ip-adress kan skrivas med jokertecken för något grövre avmaskning, men skall fånga de tänkbara avsändarna utan att riskera intrång. Skapa nu arbetsordern på maskinen "fjaerran": $ cat > ~/.cron/granska-rsync <<-SLUT #!/bin/sh # granska-rsync # case "$SSH_ORIGINAL_COMMAND" in *[\&\(\{\;\<\`\|]*) echo "Rejected" ;; rsync\ --server*) $SSH_ORIGINAL_COMMAND logger -p user.info -t rsync \ "$SSH_ORIGINAL_COMMAND" ;; *) echo "Rejected ;; esac SLUT $ exit # Lämnar den fjärran maskinen. Det första fallet avvisar alla uppdrag med misstänkta tecken, det andra tillåter fall där rsync på en annan maskin har begärd körtid, vilket man önskar, medan det tredje fallet avvisar alla andra åtkomstförsök. 5) Skapa ett cron-jobb. Varje dag klockan 14.06 utförs överföringen. $ crontab -l 06 14 * * * /home/mitt/.cron/rsync-till-fjaerran.sh Nu sköter sig arkiveringen på egen hand.