Skip to content

Duplicity: Paramiko und OpenSSH 6.7

Täglich führt mein Server ein inkrementelles Backup mittels Duplicity durch. Ein Update von OpenSSH auf dem Zielsystem Raspberry Pi hat letztlich diesen Prozess unterbrochen.

Backend Exception

Im Duplicity-Log meines zu backupenden Servers war lediglich folgendes zu sehen.

BackendException: ssh connection to XXXX failed:

ssh: Connected (version 2.0, client OpenSSH_6.7)
ssh: Exception: Incompatible ssh peer (no acceptable kex algorithm)
ssh: Traceback (most recent call last):
ssh:   File "/usr/lib/python2.7/dist-packages/paramiko/transport.py", line 1585, in run
ssh:     self._handler_table[ptype](self, m)

Das SSH-Backend verweigert den Verbindungsaufbau. Ein manueller Versuch mittels CLI-Werkzeug sftp funktioniert hingegen problemlos.

Nach kurzer Recherche bin ich bei Github fündig geworden. Laut dem Paramiko-Entwickler ist mindestens Version 1.15.1 der Bibliothek erforderlich, wenn man mit einem Zielsystem dieser OpenSSH-Version kommunizieren möchte.

Lösungsansätze

Grundsätzlich hatte ich die Möglichkeit des Downgrades von OpenSSH 6.7 auf 6.6 auf dem Zielsystem. Diese Option mochte ich allerdings nicht, da ich sonst ab diesem Zeitpunkt keine Sicherheitsupdates mehr von den Arch-Repositories hätte einspielen können. Bei einem von außen praktisch frei aufrufbaren Dienst sollte man diese Option nie ziehen.

Ein Update der Paramiko-Bibliothek auf dem Ubuntu-Server wurde auch in keinem PPA angeboten. Auf ein Update über den üblichen Weg von Canonical will ich nicht warten. All meine bisherigen derartigen Bugreports wurden nie bearbeitet, obwohl ich stets Patches mit angehängt habe. Diese Option scheidet also auch aus.

In der Manpage von Duplicity habe ich einen guten Hinweis gefunden. Es gibt ein weiteres SSH-Backend.

pexpect

Das Backend pexpect existiert noch und wird noch unterstützt. :-)

Nach dem Setzen der folgenden Option im Duplicity-Befehl des Backupskripts, funktionierte der Prozess wieder.

--ssh-backend pexpect

Fazit

Es ist sehr fein, dass diese Legacyimplementierung noch zur Verfügung steht. :-)

Kommentare

Eli am :

danke für den Rat.

Kommentar schreiben