{"id":6956,"date":"2020-10-04T16:40:00","date_gmt":"2020-10-04T14:40:00","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=6956"},"modified":"2022-06-24T10:29:52","modified_gmt":"2022-06-24T08:29:52","slug":"php-erweiterung-php-ssh2-unter-docker-installieren","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/php-erweiterung-php-ssh2-unter-docker-installieren\/","title":{"rendered":"PHP-Erweiterung php-ssh2 unter Docker installieren"},"content":{"rendered":"<p>Die PHP-Erweiterung <strong>php_ssh2<\/strong> erm\u00f6glicht den Aufbau von SSH-Verbindungen aus PHP heraus. Sie kommt beispielsweise bei der <strong>ssh-key-authority<\/strong> zum Einsatz &#8211; ein Open Source Projekt von Opera, um SSH-Keys automatisiert auf Server zu verteilen. Leider wird die Bibliothek nur sp\u00e4rlich aktualisiert, wenngleich sie noch funktioniert. Allerdings gestaltet sich die Installation dadurch als etwas schwierig. <\/p>\n<p>In meinem Anwendungsfall m\u00f6chte ich ein Docker-Image erstellen, in dem alle ben\u00f6tigten Erweiterungen f\u00fcr das Hosten der ssh-key-authority installiert sind.<\/p>\n<h2 class=\"wp-block-heading\">Manuelle Installation<\/h2>\n<p>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\u00fcr m\u00f6gliche zuk\u00fcnftige Updates empfehle ich, die Versionsmatrix zu pr\u00fcfen: <a href=\"https:\/\/pecl.php.net\/package\/ssh2\" target=\"_blank\" rel=\"nofollow\">Zum ssh2-Paket<\/a><\/p>\n<p>Da uns PHP in ihren Basis-Images <strong>pecl<\/strong> auf der Kommandozeile bereitstellt, m\u00fcssen wir nichts selbst entpacken und kompilieren. Am Beispiel des Apache2-Images kann die Installation wie folgt aussehen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">FROM php:7.4-apache\nRUN apt-get update &amp;&amp; \\\n    apt-get install -y gcc make libssh2-1-dev libssh2-1\nRUN curl http:\/\/pecl.php.net\/get\/ssh2-1.2.tgz -o ssh2.tgz &amp;&amp; \\\n    pecl install ssh2 ssh2.tgz &amp;&amp; \\\n    docker-php-ext-enable ssh2 &amp;&amp; \\\n    rm -rf ssh2.tgz\nRUN echo &#039;&lt;?php phpinfo();&#039; &gt; \/var\/www\/html\/i.php<\/code><\/pre>\n<p>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\u00fcnschten Version aktiviert sein:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">SSH2 support\tenabled\nextension version \t1.2\nlibssh2 version \t1.8.0 <\/code><\/pre>\n<p>F\u00fcr den Produktivbetrieb sollte die letzte Zeile zur Erzeugung der i.php Testdatei nat\u00fcrlich entfernt und das Image neu gebaut werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die PHP-Erweiterung php_ssh2 erm\u00f6glicht den Aufbau von SSH-Verbindungen aus PHP heraus. Sie kommt beispielsweise bei der ssh-key-authority zum Einsatz &#8211; ein Open Source Projekt von Opera, um SSH-Keys automatisiert auf Server zu verteilen. Leider wird die Bibliothek nur sp\u00e4rlich aktualisiert, wenngleich sie noch funktioniert. Allerdings gestaltet sich die Installation dadurch als etwas schwierig. In meinem &#8230;<\/p>\n","protected":false},"author":5,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[883,61],"tags":[497,55,781],"class_list":["post-6956","post","type-post","status-publish","format-standard","hentry","category-docker-containertechnologie","category-softwareentwicklung","tag-docker","tag-php","tag-ssh"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=6956"}],"version-history":[{"count":2,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6956\/revisions"}],"predecessor-version":[{"id":6958,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6956\/revisions\/6958"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=6956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=6956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=6956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}