Page 1 of 1

SSH private Key dauerhaft speichern

Posted: 2004-05-09 13:55
by netsrac
Hallo zusammen,
ich bin nicht sicher, ob das hier das richtige Forum ist, wenn nicht, dann bitte verschieben. Thnx.

Also, ich habe mir einen Satz von Scripten geschrieben, die für mich ein Backup machen. Also päckchen schnüren auf dem einen Server1 und auf dem zweiten Server2 diese per Cron regelmäßig abholen sollen.

Sollen deswegen, weil ich es irgendwie nicht schaffe den private key meines users dauerhaft im ssh agent zu speichern...

Wenn ich also als User "backup" auf den Server 2 gehe hab ich folgendes scrtipt das mir den schlüssel einstellt.

Code: Select all

#!/bin/bash
# Output von ssh-agent in Temporäre Datei
TMP_FILE=/usr/local/backup/.ssh_agent_data
eval `ssh-agent > $TMP_FILE`

# File wird eingelesen und Bestandteile mit CUT extrahiert
TEST=`cat $TMP_FILE`
SSH_AUTH_SOCK=`echo $TEST | cut -f 1 -d ';' | cut -f 2 -d'='`
SSH_AGENT_PID=`echo $TEST | cut -f 3 -d ';' | cut -f 2 -d'='`

# SSH_AUTH_SOCK & SSH_AGENT_PID
export SSH_AUTH_SOCK
export SSH_AGENT_PID

# Add the ssh-key
ssh-add /usr/local/backup/.main/id_rsa

Aber warum kann ich das ganze nicht auch über einen cron job starten? ich fahre ja den ssh-agent nicht beim ausloggen runter.. .er läuft ja weiter...

Jemand eine Idee, wie ich diesen Key so einbaue, das er von meinem Cronjob auch gefunden wird?

Danke für eure Hilfe.

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 15:40
by majortermi
Das Skript, dass per Cron-Job aufgerufen wird, hat logischerweise nicht die Umgebungsvariablen des SSH-Agent gesetzt.

Ich würde für diesen Zweck einfach separate Schlüssel ohne Passphrase verwenden. Für diese dann aber auf jeden Fall die Zugriffsrechte richtig setzen!

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 17:54
by sica
Eigentlich sollte es reichen, wenn du die Ausgabe des ssh-agent in eine Datei schreibst (tust du ja eh) und die dann mit

Code: Select all

source /pfad/zur/datei
zu Beginn deines Scripts einbindest, dann sollte auch das Script, das ueber cron laeuft problemlos mit dem ssh-agent laufen. Ich mache das im Moment auch so wenn ich ueber rsync regelmaeszig Backups meines Homeverzeichnisses mache.

Bye
sica

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 18:27
by netsrac
Super, ich hab jetzt ein das Script umgebaut und es schaut so aus...

Vielleicht nutzt es dem einen oder anderen nochwas...

Code: Select all

#!/bin/bash
# Output von ssh-agent in Temporäre Datei
TMP_FILE=/usr/local/backup/.ssh_agent_data
eval `ssh-agent > $TMP_FILE`

# File wird eingelesen und Bestandteile mit CUT extrahiert
TEST=`cat $TMP_FILE`
SSH_AUTH_SOCK=`echo $TEST | cut -f 1 -d ';' | cut -f 2 -d'='`
SSH_AGENT_PID=`echo $TEST | cut -f 3 -d ';' | cut -f 2 -d'='`

# SSH_AUTH_SOCK & SSH_AGENT_PID
export SSH_AUTH_SOCK
export SSH_AGENT_PID

# Füge den private Key ohne Passphrase hinzu
ssh-add /usr/local/backup/.main/id_rsa

cd /usr/local/backup

sftp backup@hostname.de:backup/db
sftp backup@hostname.de:backup/user.tgz

#packe die Datenbankdatei und nenne hänge aktuelle Zeit an den Dateinamen
/usr/bin/gzip db
mv db.gz db.`date "+%Y-%m-%d-%H%M"`
mv user.tgz user.`date "+%Y-%m-%d-%H%M"`.tar

#Beende den ssh-agent
ssh-agent -k

Das holt mir 2 Files ab und archiviert sie mit dem Dateinamen + akt. Datum.

Danke für den Tip!! :)

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 20:56
by majortermi
Der Nachteil dieser Lösung ist allerdings, dass sie nach dem Reboot des Servers nicht mehr funktioniert, weil der ssh-agent wieder manuell gestartet werden muss. Ich persönlich bevorzuge grundsätzlich Lösungen, bei denen kein manuelles Eingreifen notwendig ist.

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 21:07
by netsrac
MajorTermi wrote: weil der ssh-agent wieder manuell gestartet werden muss. .
Er wird doch beim Start des Scripts automatisch gestartet... ;) Und wenn das Script fertig ist, wird er wieder geschlossen...

eval `ssh-agent > $TMP_FILE`

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 21:25
by majortermi
Netsrac wrote:eval `ssh-agent > $TMP_FILE`
Wahrscheinlich ist das jetzt eine saublöde Frage, aber was bringt mir der ssh-agent, wenn ich die Passphrase dann im Skript stehen habe?
Oder ich benutze eben Keys ohne Passphrase, aber dann brauche ich doch erst gar nicht den ssh-agent benutzen...

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-09 21:44
by netsrac
8O So blöd ist die gar nicht. Hab da wahrscheinlich eine Wissenslücke.

Ich war immer der Meinung man könnte einen key, egal ob mit oder ohne passphrase, nicht ohne ssh-agent verwenden.

Re: SSH private Key dauerhaft speichern

Posted: 2004-05-10 10:20
by Joe User

Code: Select all

# Backup_01
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub backupuser@server:~/.ssh/backup_01.id_rsa.pub

# Backup_02
ssh-keygen -t rsa
scp ~/.ssh/id_rsa.pub backupuser@server:~/.ssh/backup_02.id_rsa.pub

# Server
cat ~/.ssh/backup_01.id_rsa.pub >> ~/.ssh/authorized_keys
cat ~/.ssh/backup_02.id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/.ssh/backup_0{1,2}.id_rsa.pub