open-how2 – Entdecke. Verstehe. Nutze.
Veröffentlicht am
How2-Tipps

Was ist ext-ssh2? Die PHP-Erweiterung für SSH-Verbindungen einfach erklärt

Autor
Was ist ext-ssh2? Die PHP-Erweiterung für SSH-Verbindungen einfach erklärt

Einleitung

Wer mit PHP nicht nur Webseiten ausliefern, sondern auch Server verwalten, Backups übertragen oder Remote-Befehle ausführen möchte, stößt früher oder später auf ext-ssh2.

Doch was genau ist ext-ssh2? Wofür braucht man es? Und wie wird es korrekt installiert?

In diesem ausführlichen Leitfaden bekommst du alle Antworten – verständlich und praxisnah erklärt.

Was ist ext-ssh2?

ext-ssh2 ist eine offizielle PHP-Erweiterung, die es ermöglicht, aus PHP heraus eine SSH-Verbindung zu einem entfernten Server aufzubauen.

Technisch basiert sie auf der C-Bibliothek libssh2 und stellt in PHP Funktionen bereit wie:

  • ssh2_connect()
  • ssh2_auth_password()
  • ssh2_auth_pubkey_file()
  • ssh2_exec()
  • ssh2_sftp()

Damit kann eine PHP-Anwendung sicher mit einem Remote-Server kommunizieren.

Was ist SSH überhaupt?

SSH (Secure Shell) ist ein verschlüsseltes Netzwerkprotokoll, mit dem man:

  • Server administrieren
  • Dateien übertragen (SFTP)
  • Kommandos ausführen
  • Tunnels aufbauen

kann.

Standard-Port: 22

SSH ist heute der sichere Standard für Serverzugriffe.

Wofür wird ext-ssh2 eingesetzt?

Hier einige typische Anwendungsfälle:

1. Automatisierte Backups

Ein PHP-Skript überträgt Backup-Dateien per SFTP auf einen Backup-Server.

2. Remote-Kommandos

Eine Weboberfläche startet Wartungsskripte auf einem anderen Server.

3. Deployment

Code wird automatisch per SSH auf einen Produktionsserver übertragen.

4. Monitoring / Node-Reporting

Server melden Statusinformationen zurück.

Beispiel: SSH-Verbindung in PHP

<?php

$connection = ssh2_connect('example.com', 22);

if (!$connection) {
    die('Verbindung fehlgeschlagen');
}

if (!ssh2_auth_password($connection, 'username', 'password')) {
    die('Authentifizierung fehlgeschlagen');
}

$stream = ssh2_exec($connection, 'ls -la');
stream_set_blocking($stream, true);

echo stream_get_contents($stream);

Hinweis: In produktiven Umgebungen sollte Public-Key-Authentifizierung verwendet werden.

Installation von ext-ssh2

Die Installation hängt von deinem Betriebssystem und deiner PHP-Version ab.

Installation unter Linux (Debian / Ubuntu)

Schritt 1: Paket installieren

sudo apt update
sudo apt install php-ssh2

Falls du eine spezielle PHP-Version nutzt:

sudo apt install php8.2-ssh2

Schritt 2: Webserver neu starten

Apache:

sudo systemctl restart apache2

PHP-FPM:

sudo systemctl restart php8.2-fpm

Installation unter CentOS / RHEL / AlmaLinux

sudo dnf install php-ssh2

Oder:

sudo yum install php-ssh2

Danach:

sudo systemctl restart httpd

Installation über PECL (manuelle Methode)

Falls kein Paket verfügbar ist:

Schritt 1: Entwicklungswerkzeuge installieren

Debian/Ubuntu:

sudo apt install php-dev libssh2-1-dev

Schritt 2: PECL installieren

sudo pecl install ssh2

Schritt 3: php.ini anpassen

In der php.ini hinzufügen:

extension=ssh2

Schritt 4: Webserver neu starten

Installation unter Windows

  1. Passende DLL herunterladen (z. B. von windows.php.net)
  2. Datei in den ext-Ordner kopieren
  3. In der php.ini aktivieren:
extension=php_ssh2.dll
  1. Webserver neu starten

Wichtig: Die Version muss exakt zu deiner PHP-Version passen (Thread Safe / Non Thread Safe beachten).

Prüfen, ob ext-ssh2 aktiv ist

Variante 1 – CLI

php -m | grep ssh2

Variante 2 – PHP

<?php
var_dump(function_exists('ssh2_connect'));

Variante 3 – phpinfo()

<?php phpinfo(); ?>

Sicherheitshinweise

  • Nutze möglichst Public-Key-Authentifizierung
  • Keine Passwörter im Klartext speichern
  • Private Keys mit sicheren Rechten versehen (chmod 600)
  • SSH-Zugriff auf bestimmte IPs beschränken
  • Firewall nutzen

Vorteile von ext-ssh2

✔ Direkte Integration in PHP ✔ Keine Shell-Wrapper notwendig ✔ Unterstützt SFTP ✔ Stabil und weit verbreitet ✔ Ideal für Automatisierung

Nachteile

✖ Nicht standardmäßig aktiviert ✖ Oft nicht bei Shared Hosting verfügbar ✖ Erfordert Serverzugriff für Installation

Alternativen zu ext-ssh2

  • Reine Shell-Aufrufe mit exec() (unsicherer)
  • Composer-Bibliotheken wie phpseclib (reine PHP-Implementierung)
  • REST-APIs statt SSH

Fazit

ext-ssh2 ist die professionelle Lösung, wenn PHP sicher mit entfernten Servern kommunizieren soll.

Gerade bei:

  • Backup-Systemen
  • Node-Kommunikation
  • Automatisierung
  • Remote-Verwaltung

ist diese Erweiterung ein mächtiges Werkzeug.

Mit wenigen Installationsschritten lässt sich ext-ssh2 aktivieren – und eröffnet völlig neue Möglichkeiten für serverseitige PHP-Anwendungen.