phuxtil / flysystem-ssh-shell
SSH/Shell adapter for league/flysystem
Installs: 12 052
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 0
Forks: 5
Open Issues: 3
Requires
- php: ^8
- league/flysystem: ^1
- phuxtil/find: ^3
- phuxtil/stat: ^3
- symfony/process: ^4|^5
Requires (Dev)
- ext-posix: *
- phpunit/phpunit: ^9
- popo/generator: ^5
- symfony/var-dumper: ^5
This package is auto-updated.
Last update: 2024-12-06 19:28:37 UTC
README
Flysystem adapter for SSH shell.
Installation
composer require phuxtil/flysystem-ssh-shell
Note: Use v1.x for compatibility with PHP v7.0.x Note: Use v2.x for compatibility with PHP v7.2+
Requirements
The following programs installed and configured on local host:
- ssh
- scp
The following programs installed on the remote host:
- find
- cat
- stat
- rmdir
- mkdir
- chmod
- mv
- rm
- sh compatible shell
Configuration
Use \Phuxtil\Flysystem\SshShell\SshShellConfigurator
to pass options to adapter.
$configurator = (new \Phuxtil\Flysystem\SshShell\SshShellConfigurator()) ->setRoot('/remote_server/path') ->setUser('remote_user') ->setHost('remote-ssh-host') ->setPrivateKey('path/to/id_rsa.private_key') ->setPort(22);
Authentication
Two authentication methods are supported:
via ssh config
The value of user@host
is configured in ssh config file.
$configurator = (new \Phuxtil\Flysystem\SshShell\SshShellConfigurator()) ->setUser('user') ->setHost('host');
Note: This is the default setting.
via ssh private key
$configurator = (new \Phuxtil\Flysystem\SshShell\SshShellConfigurator()) ->setUser('user') ->setHost('host') ->setPrivateKey('path/to/id_rsa.private_key');
Passed as -i
option to ssh/scp.
Note: To revert to default setting, unset private key value.
Bootstrap
<?php use League\Flysystem\Filesystem; use Phuxtil\Flysystem\SshShell\SshShellConfigurator; use Phuxtil\Flysystem\SshShell\SshShellFactory; \error_reporting(\E_ALL); include __DIR__ . '/vendor/autoload.php'; $configurator = (new SshShellConfigurator()) ->setRoot('/tmp/remote_fs') ->setUser('user') ->setHost('host'); $adapter = (new SshShellFactory())->createAdapter($configurator); $filesystem = new Filesystem($adapter);
TDD
Default root directory on remote host is /tmp/remote_fs
.
Available parameters:
TESTS_SSH_USER
TESTS_SSH_HOST
TEST_SSH_PORT
(optional, default 22)
Run tests with:
TESTS_SSH_USER=... TESTS_SSH_HOST=... vendor/bin/phpunit --group acceptance