prsw / ssh-client
Async SSH client for PHP using amphp v3 fibers. Supports password and public key auth, command execution with streaming output, and interactive shell.
dev-main
2026-05-09 13:19 UTC
Requires
- php: >=8.4
- ext-gmp: *
- ext-openssl: *
- ext-sodium: *
- amphp/amp: ^3.1
- amphp/byte-stream: ^2.1
- amphp/file: ^3.2
- amphp/pipeline: ^1.1
- amphp/socket: ^2.4
- php-standard-library/php-standard-library: ^6.1
Requires (Dev)
- carthage-software/mago: ^1.26.0
- phpunit/phpunit: ^11.0
This package is auto-updated.
Last update: 2026-05-09 13:26:43 UTC
README
Async SSH client for PHP, built on amphp v3 fibers.
No libssh2 dependency. Pure PHP — uses ext-openssl, ext-sodium, and ext-gmp for crypto.
Install
composer require prsw/ssh-client
Quick Start
Execute a command
\Amp\async(function (): void { $client = \PRSW\Ssh\Client\SshClient::connect( 'host:22', new \PRSW\Ssh\Client\Authentication\PasswordAuthentication('user', 'password'), ); $exec = $client->exec('ls -la'); \Amp\ByteStream\pipe($exec->getStdout(), \Amp\ByteStream\getStdout()); $exitCode = $exec->wait(); })->await();
Interactive shell
\Amp\async(function (): void { $client = \PRSW\Ssh\Client\SshClient::connect( 'host:22', new \PRSW\Ssh\Client\Authentication\PasswordAuthentication('user', 'password'), ); $shell = $client->shell(); \Amp\ByteStream\pipe(\Amp\ByteStream\getStdin(), $shell->getStdin()); \Amp\ByteStream\pipe($shell->getStdout(), \Amp\ByteStream\getStdout()); \Amp\ByteStream\pipe($shell->getStderr(), \Amp\ByteStream\getStderr()); $shell->wait(); })->await();
Public key auth
$auth = new \PRSW\Ssh\Client\Authentication\PublicKeyAuthentication( 'user', privateKey: '/home/user/.ssh/id_ed25519', ); \Amp\async(function () use ($auth): void { $client = \PRSW\Ssh\Client\SshClient::connect('host:22', $auth); $exec = $client->exec('whoami'); \Amp\ByteStream\pipe($exec->getStdout(), \Amp\ByteStream\getStdout()); $exec->wait(); })->await();
Requirements
- PHP 8.4+
- ext-openssl, ext-sodium, ext-gmp, ext-hash
License
MIT