h1

Net::SSH::Perl installieren

21. April 2008

Im Gegensatz zu Net::SSH bietet das Modul Net::SSH::Perl eine voll in Perl integrierten SSH-Client, der in den Perl-Scripts verwenet werden kann. D.h. dieser ist von der installierten SSH-Version unabhängig, forked nicht bei jedem Aufruf was für Performance und Sicherheit sorgt.

Das große Problem an diesem Modul ist die Installation. Es gibt zahlreiche Abhängigkeiten und die Installation via CPAN scheiterte sowohl auf Mac OS X (10.5.2) als auch im Ubuntu Server 6.01 (LTS). Als Troublemaker hab ich die Module Math::Pari, Math::BigInt::GMP und Crypt::DSA geortet. Diese habe ich nun manuell installiert. Dazu die folgenden Schritte zunächst für Ubuntu und dann für OS X:

Installation von Net::SSH::Perl auf Ubuntu 6.01.1 Server

Falls man das nicht schon hinter sich hat müssen perl und cpan installiert werden:

# apt-get install perl

Dann geht’s los …

Math::Pari

$sudo -s
# apt-get update
# apt-get upgrade
# apt-get install gcc
#apt-get install g++

Dann hole man sich das Tar von der Pari-Homepage und packe es im CPAN-Build-Verzeichnis aus:

# cd ~/.cpan/build
# wget http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-2.3.3.tar.gz
# tar -xzf pari-2.3.3.tar.gz

Nun kann man den Anweisungen aus dem INSTALL folgen:

b) ./Configure

c) make all, make bench

d) make install

e) cp misc/gprc.dft /etc/gprc

Tipp: Wenn man diese Fehlermeldung bekommt „C compiler does not work. PARI/GP requires an ANSI C compiler“ dann hat man vergessen den c++-Kompiler zu installieren. Siehe oben!

Math::BigInt::GMP

Damit dieses Modul installiert werden kann, muss man erst einmal eine GMP-Library im OS installieren:

# apt-get install libgmp3-dev

cpan> install Math::BigInt::GMP

Crypt::DSA

Crypt::DSA muss manuell (ohne CPAN) installiert werden, da make test sich aufhängt.

# wget http://search.cpan.org/CPAN/authors/id/B/BT/BTROTT/Crypt-DSA-0.14.tar.gz
# tar xzf Crypt-DSA-0.14.tar.gz
# cd Crypt-DSA-0.14
# perl Makefile.PL
# make
# make install

Nun kann man den Rest mit CPAN installieren:

cpan> install Net::SSH::Perl

Bei der Auswahl der Algorithmen würde ich noch DES3 hinzunehmen – NetApp z.B. unterstützt das out-of-the-box:

    [1] IDEA
[2] DES
[3] DES3
[4] Blowfish
[5] RC
Enter your choices, separated by spaces: [1] 1 3

Möchte man Tripple-DES ergänzen, nachdem man das Modul Net::SSH::Perl schon einmal nur mit IDEA installiert hat, so ruft man einfach in der cpan-Shell make Net::SSH::Perl auf.

Installation von Net::SSH::Perl auf Mac OS X

Zunächst ein Hinweis: Die Developer-Tools waren bei mir installiert (siehe http://developer.apple.com/tools/xcode/index.html ) – das muss so sein, schon alleine damit die später benötigte port-Software funktioniert.

Ansonsten versuchte ich sinngemäß zu verfahren wie beim Ubuntu-Server. Die Installation von Crypt::DSA mittels CPAN war kein Problem (OS X 10.5.2). Somit bleiben Math::Pari und GMP als „Sonderfälle“. Und da war nichts zu machen. Weder mittel CPAN noch durch den Weg „zu Fuß“ mittels Download, Auspacken und dann ./Configure und make. Somit änderte ich die Strategie komplett und installierte das ganze mittels darwin-ports. Falls noch nicht geschehen, ist die Darwinport-Software zunächst zu installieren. (Siehe http://darwinports.com/ bzw. http://guide.macports.org/)

Installation von Pari

ich habe zunächst einmal Pari installiert. Das Paket liegt hier (http://pari.darwinports.com/), muss aber nicht heruntergeladen werden. Das macht das Komando:

$ sudo port install pari

Installation von Convert::PEM und Net::SSH::Perl

http://p5-convert-pem.darwinports.com/

Da hat sich ein Problem ergeben: Nach einiger Zeit bleibt der Installationsprozess hängen, die CPUs laufen auf jeweils 100% und nichts geht mehr weiter. Auch viel Geduld ändert da nichts. Wenn man die Installation im Debugmodus startet, sieht man die Ursache des Problems:

$sudo port -d install p5-convert-pem

Wenn CPAN für diesen User noch nicht konfiguriert ist, frägt Darwinport nach dem Kontinent für Downloads. Und aus dieser Schleife findet er icht mehr heraus. Die Lösung ist also, cpan zuvor zu konfigurieren und sicher zustellen, dass diese Konfiguration dauerhaft gespeichert wurde. (Ich hab dazu sudo -s und dann als root cpan gestartet, Bundle::CPAN installiert, CPAN nochmal gestartet und die diversen Dialoge beantwortet wobei ich die Frage nach der Speicherung der Konfiguration entgeggen dem Default mit yes statt mit no beantwortet hatte.)

Nach diesem Heckmeck durfte ich dann endlich Convert::PEM und Net::SSH::Perl installieren; und zwar so:

$ sudo port install p5-net-ssh-perl

Nacharbeiten

Die Module werden so out of the Box nicht gefunden. Man kann deren Verzeichnisse (/opt/local/lib/perl5/5.8.8) aber mit lib im Perlscript hinzufügen.

Veränderungen an den Modulen

Wenn man diese mit port installierten Module allerdings editiert und die Veränderten in ein eigenes Verzeichnis kopieren, funktioniert das ganze nur noch teilweise. Net::SSH::Perl kommt damit zurecht. Math::Pari sträubt sich aber. Das führt dazu, dass in diesem Fall nur SSH1 Verbindungen mit Net::SSH::Perl möglich sind.

6 Kommentare

  1. Hallo,

    bei mir funktioniert die Installation (vielen Dank!) aber wenn ich versuche das Net::SSH::Perl Modul zu benutzen, klappt es nicht. Ich kann sehen, das perl ein Verbindung zu richtige IP versucht aufzubauen, aber kurz danach bekomme ich diesen Fehler:

    $ perl myscript.pl
    Can’t load ‚/opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level/auto/Math/Pari/Pari.bundle‘ for module Math::Pari: dlopen(/opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level/auto/Math/Pari/Pari.bundle, 1): Symbol not found: _hiremainder
    Referenced from: /opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level/auto/Math/Pari/Pari.bundle
    Expected in: dynamic lookup

    Falls dieser Fehler jemandem bekannt ist, wäre ich dankbar für eine Idee…

    Gruß,


  2. Hallo kaz,
    verbindest du dich mit SSH1 oder 2? Wenn 2, dann probier bitte SSH1 – das könnte das Pari-Problem umgehen.
    Gruß, Ingo


  3. That does work, thanks! Unfortunately my host doesn’t accept ssh-1 connections…


  4. Tut mir Leid, habe unabsichtlich auf englisch geantwortet. Hatte gerade in englisch „gepostet“ und habe mich irgendwie nicht umgestellt ;)


  5. Ich brauche keine win32 Kompatibilität, also habe ich Net::SSH2 probiert, und es geht. Das reicht mir.

    Danke für die Hilfe, auf jeden Fall.


  6. Perfekt…saved my day :-)



Hinterlasse einen Kommentar