# [solved]Problem mit rsync-ssh-Bashscript und Passwortabfrage

## Jimini

Aloha,

ich lasse jeden Morgen ein kleines Bashscript durchlaufen, das unter anderem ein inkrementelles Backup fährt und via SSH auf den Fileserver schiebt:

```
rsync -av --delete --stats /daten user@fileserver:/backup/daten/
```

Ich habe SSH so eingerichtet, dass kein Passwort abgefragt wird und der User sich nur mit einem Keyfile authentifiziert. Führe ich obigen Befehl (als root) in einer Shell aus, funktioniert auch alles, wie es soll - die SSH-Verbindung wird hergestellt, der Datenbestand abgeglichen, fertig. Führe ich hingegen das Bashscript (als root) aus, muss ich das zum Keyfile passende Passwort eingeben. 

Hat einer eine Idee, woran das liegen könnte?

MfG Jimini

----------

## mv

Das Passwort zu Keyfile muss immer irgendwann eingegeben werden. Du kannst höchstens einen ssh-agent im Hintergrund laufen haben, mit dem Du Dich verbindest (und der das Passwort schon beim Start kennt); je nach DE (gnome/kde/...) kann dieser ssh-agent bereits beim Start der DE gestartet werden (und möglicherweise wird er dann mit dem Passwort durch irgendeinen Mechanismus der DE versorgt).

In einer neuen Shell ist möglicherweise der Socket des ssh-agent nicht bekannt (wenn Du nicht die entsprechenden Variablen exportierst). Um die Variablen beim Start in einer Datei zu speichern und später zu sourcen, kannst Du beispielsweise net-misc/keychain benutzen.

----------

## Jimini

Ah okay, das erklärt natürlich so einiges. Ich wusste bisher nicht, dass der ssh-agent nur für die aktuelle Shell das Passwort bereithält - ich werde mir daher mal keychain anschauen. Danke!

MfG Jimini

Edit: http://www.gentoo.org/doc/de/keychain-guide.xml für die, die sich damit befassen möchten.

----------

## Jimini

Ich verstehe die Funktionsweise von keychain bzw den Unterschied zu ssh-agent noch nicht ganz. Ich habe gemäß obiger Anleitung folgendes in die .bash_profile von "user1" auf "Server" eingefügt:

```
keychain ~/.ssh/id_dsa

. ~/.keychain/$HOSTNAME-sh

. ~/.keychain/$HOSTNAME-sh-gpg
```

Logge ich mich nun vom Rechner "Client" als "user1" auf "Server" ein, muss ich das Passwort des Keyfiles auf "Client" eingeben. Danach bin ich als "user1" auf "Server" eingeloggt, folgendes wird ausgegeben:

```
ssh user1@Server

Enter passphrase for key '/root/.ssh/id_dsa': 

Last login: Sun Jul 25 21:26:01 CEST 2010 from atlas on pts/6

 * keychain 2.7.1 ~ http://www.funtoo.org

 * Found existing ssh-agent: 12171

 * Found existing gpg-agent: 12196

 * Known ssh key: /home/user1/.ssh/id_dsa
```

Bis hierhin funktioniert es so wie zuvor auch mit ssh-agent - allerdings nach wie vor mit dem Nachteil, dass ich einmal das Passwort des Keyfiles eingeben muss, was natürlich mit meinem Script nicht funktioniert.

MfG Jimini

Edit: ich habe das Problem jetzt dadurch gelöst, dass ich auf dem Fileserver einen neuen Benutzer erstellt habe, der eine passwortlose Anmeldung via SSH ermöglicht.

----------

## mv

 *Jimini wrote:*   

> 
> 
> ```
> keychain ~/.ssh/id_dsa
> 
> ...

 

Wahrscheinlich willst Du beim keychain-Aufruf im Profile noch so Optionen wie --noask --quick (anstelle des Arguments ~/.ssh/id_dsa) benutzen. Du musst dann nur irgendwann einmal das obige keychain-Kommando (oder ssh-add) aufrufen, um den Schlüssel einmalig (pro Computerstart) einzugeben. Dass Du den Schlüssel einmal irgendwo eingeben musst, sollte klar sein.

Edit: Passwortlose Anmeldung bei ssh ist wohl das Schlechtestmögliche. Wenn, dann mach Dir wenigstens einen id_dsa-Schlüssel ohne Passwort, aber auch das ist sicherheitsmäßig schon ein GAU.

----------

## Jimini

 *mv wrote:*   

> Edit: Passwortlose Anmeldung bei ssh ist wohl das Schlechtestmögliche. Wenn, dann mach Dir wenigstens einen id_dsa-Schlüssel ohne Passwort, aber auch das ist sicherheitsmäßig schon ein GAU.

 

Sorry, genau das meinte ich - die Anmeldung erfolgt über einen Public Key ohne Passwort. Allerdings kommen noch 2 Dinge hinzu:

- der Fileserver ist nur aus dem LAN erreichbar

- das Einloggen als der User des Routers, von dem aus die SSH-Verbindung vom Router zum Fileserver aufgebaut wird, ist via SSH nicht möglich. De facto muss man also root-Zugriff haben, um die Verbindung aufbauen zu können, und root-Zugang via SSH ist natürlich ebenfalls nicht möglich

Damit sollte das ganze doch halbwegs sicher sein, oder?

MfG Jimini

----------

## mv

Es kommt darauf an, wie oft Du diesen Zugriff machst: Wenn Du ohnehin bei jedem Einschalten des Rechners als erstes das Passwort für den Public Key eingibst, ist das Vorgehen ziemlich egal. Wenn Du das aber nur relativ selten machst, kann Dein Fileserver bei Benutzung von keychain nur dann über diesen Key kompromitiert werden, wenn zufällig Dein Router genau zu dem Zeitpunkt angegriffen wird (oder ein Troyaner läuft), zu dem Du den Key eingibst - und beim nächsten Start ist die Gelegenheit schon wieder vorüber.

Klar, wenn Du sicher bist, dass Dein Router nie und nimmer übernommen werden kann, ist es wurst.

Aber über Aussagen wie "nur von LAN aus erreichbar" musst Du vorsichtg sein: Es gibt IP-Spoofing, MAC-Spoofing, Ausnutzen von Overflows von Tabellen von IP's oder MACs, ...

----------

## Jimini

Die beiden Kisten laufen bei mir 24/7, das Script läuft bei mir exakt einmal pro Tag. So wie ich dich verstehe, wäre ein fremder Zugriff auf den Fileserver nur zu exakt diesem Zeitpunkt möglich - von Trojanern mal abgesehen, korrekt? Dass der Router übernommen wird, kann ich natürlich nicht absolut ausschließen ;)

Mal eine Frage aus Interesse - inwieweit kann man IP- bzw MAC-Spoofing entgegenwirken, wenn man bei den iptables-Regeln Zugriff auf bestimmte Services an eine bestimmte NIC bindet?

MfG Jimini

----------

## mv

 *Jimini wrote:*   

> Die beiden Kisten laufen bei mir 24/7, das Script läuft bei mir exakt einmal pro Tag.

 

Es kommt nicht darauf an, wie oft das Script gestartet wird, sondern wie lange die Instanz des ssh-agent läuft, in die Du Dein Passwort eingegeben hast: Solange dieser Daemon läuft, kann root ihn ansprechen und entsprechend Zugriff auf Deinen Fileserver erhalten.

 *Quote:*   

> Mal eine Frage aus Interesse - inwieweit kann man IP- bzw MAC-Spoofing entgegenwirken

 

Da bin ich kein Spezialist, aber von dem, was ich hörte, so ziemlich gar nicht: Für einen Angreifer mit entsprechenden Kenntnissen dürfte irgendein Mechanismus zum Spoofen immer zu finden sein (falls er physikalisch nahe genug an Dein Netz kommt - u.U. hält ihn halt Dein Internetprovider indirekt davon ab).

----------

