- Veröffentlicht am
- • How2-Tipps
Was ist ext-ssh2? Die PHP-Erweiterung für SSH-Verbindungen einfach erklärt
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
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
- Passende DLL herunterladen (z. B. von windows.php.net)
- Datei in den
ext-Ordner kopieren - In der
php.iniaktivieren:
extension=php_ssh2.dll
- 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.