SSH private Key dauerhaft speichern

Backup, Restore und Transfer von Daten
Post Reply
netsrac
Posts: 24
Joined: 2004-01-10 23:56
 

SSH private Key dauerhaft speichern

Post 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.
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: SSH private Key dauerhaft speichern

Post 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!
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
sica
Posts: 14
Joined: 2002-08-09 14:15
 

Re: SSH private Key dauerhaft speichern

Post 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
netsrac
Posts: 24
Joined: 2004-01-10 23:56
 

Re: SSH private Key dauerhaft speichern

Post 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!! :)
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: SSH private Key dauerhaft speichern

Post 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.
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
netsrac
Posts: 24
Joined: 2004-01-10 23:56
 

Re: SSH private Key dauerhaft speichern

Post 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`
majortermi
Userprojekt
Userprojekt
Posts: 916
Joined: 2002-06-17 16:09
 

Re: SSH private Key dauerhaft speichern

Post 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...
Erst nachlesen, dann nachdenken, dann nachfragen... :)
Warum man sich an diese Reihenfolge halten sollte...
netsrac
Posts: 24
Joined: 2004-01-10 23:56
 

Re: SSH private Key dauerhaft speichern

Post 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.
User avatar
Joe User
Project Manager
Project Manager
Posts: 11191
Joined: 2003-02-27 01:00
Location: Hamburg
Contact:
 

Re: SSH private Key dauerhaft speichern

Post 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
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Post Reply