PHP-Erweiterung php-ssh2 unter Docker installieren

Die PHP-Erweiterung php_ssh2 ermöglicht den Aufbau von SSH-Verbindungen aus PHP heraus. Sie kommt beispielsweise bei der ssh-key-authority zum Einsatz – ein Open Source Projekt von Opera, um SSH-Keys automatisiert auf Server zu verteilen. Leider wird die Bibliothek nur spärlich aktualisiert, wenngleich sie noch funktioniert. Allerdings gestaltet sich die Installation dadurch als etwas schwierig.

In meinem Anwendungsfall möchte ich ein Docker-Image erstellen, in dem alle benötigten Erweiterungen für das Hosten der ssh-key-authority installiert sind.

Manuelle Installation

Die direkte Installation scheint nicht mehr zu funktionieren. Als Workaround kann man jedoch auch die aktuellste Version aus dem PECL-Repository herunterladen. PHP hostet dort diverse Erweiterungen. Derzeit ist dies Version 2.1.2 vom 18.09.2020. Für mögliche zukünftige Updates empfehle ich, die Versionsmatrix zu prüfen: Zum ssh2-Paket

Da uns PHP in ihren Basis-Images pecl auf der Kommandozeile bereitstellt, müssen wir nichts selbst entpacken und kompilieren. Am Beispiel des Apache2-Images kann die Installation wie folgt aussehen:

FROM php:7.4-apache
RUN apt-get update && \
    apt-get install -y gcc make libssh2-1-dev libssh2-1
RUN curl http://pecl.php.net/get/ssh2-1.2.tgz -o ssh2.tgz && \
    pecl install ssh2 ssh2.tgz && \
    docker-php-ext-enable ssh2 && \
    rm -rf ssh2.tgz
RUN echo '<?php phpinfo();' > /var/www/html/i.php

Um die Installation zu testen, nach dem Starten des Containers im Browser http://127.0.0.1/i.php aufrufen. Dort sollte die SSH2-Erweiterung in der gewünschten Version aktiviert sein:

SSH2 support	enabled
extension version 	1.2
libssh2 version 	1.8.0 

Für den Produktivbetrieb sollte die letzte Zeile zur Erzeugung der i.php Testdatei natürlich entfernt und das Image neu gebaut werden.

Leave a Reply