PHP code example of zpm-packages / server-access-laravel
1. Go to this page and download the library: Download zpm-packages/server-access-laravel library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
zpm-packages / server-access-laravel example snippets
return [
'sync_with_database' => false,
'allow_manager_password_update' => false,
'database_sync_schedule' => 'hourly',
'models' => [
'server' => ZPMPackages\LaravelSshManagement\Models\SshServer::class,
'user' => ZPMPackages\LaravelSshManagement\Models\SshUser::class,
'key' => ZPMPackages\LaravelSshManagement\Models\SshKey::class,
],
'servers' => [
'current-system' => [
'name' => 'Current System',
'host' => null,
'port' => 22,
'operating_system' => 'linux',
'manager_username' => env('SSH_MANAGER_USERNAME'),
'manager_password' => env('SSH_MANAGER_PASSWORD'),
'is_current_system' => true,
],
],
];
'sync_with_database' => false,
'servers' => [
'current-system' => [
'name' => 'Current System',
'host' => null,
'port' => 22,
'operating_system' => PHP_OS_FAMILY === 'Windows' ? 'windows' : 'linux',
'manager_username' => env('SSH_MANAGER_USERNAME'),
'manager_password' => env('SSH_MANAGER_PASSWORD'),
'is_current_system' => true,
],
],
use ZPMPackages\LaravelSshManagement\Services\SshDirectDataService;
$servers = app(SshDirectDataService::class)->listServers();
$server = app(SshDirectDataService::class)->findServer('current-system');
$users = app(SshDirectDataService::class)->listUsers('current-system');
$user = app(SshDirectDataService::class)->createUser([
'username' => 'deploy',
'name' => 'Deploy User',
'home_directory' => '/home/deploy',
'groups' => ['deploy', 'www-data'],
'comment' => 'Deployment account',
'is_root' => false,
'can_read_entries' => true,
'can_write_entries' => true,
'can_manage_entries' => false,
'managed_directories' => ['/srv/apps'],
], 'current-system');
$updated = app(SshDirectDataService::class)->updateUser($user, [
'comment' => 'Updated deployment account',
'managed_directories' => ['/srv/apps', '/srv/releases'],
]);
app(SshDirectDataService::class)->deleteUser($updated);
$manualKey = app(SshDirectDataService::class)->createKey($user, [
'name' => 'CI key',
'public_key' => 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA... ci@runner',
'public_key_path' => '.ssh/ci.pub',
'private_key_path' => '.ssh/ci',
'is_managed' => false,
]);
$generatedKey = app(SshDirectDataService::class)->generateKey($user, [
'name' => 'deploy@host',
'key_type' => 'ed25519',
'passphrase' => 'secret-passphrase',
'private_key_path' => '.ssh/deploy',
'public_key_path' => '.ssh/deploy.pub',
]);
$updatedKey = app(SshDirectDataService::class)->updateKey($user, (string) $generatedKey->getKey(), [
'comment' => 'Rotated deploy key',
]);
app(SshDirectDataService::class)->deleteKey($user, (string) $updatedKey->getKey());
'sync_with_database' => true,
'database_sync_schedule' => 'hourly',
use App\Models\SshUser;
use ZPMPackages\LaravelSshManagement\Services\SshUserManagerService;
$user = SshUser::query()->with('sshServer', 'sshKeys')->findOrFail($id);
app(SshUserManagerService::class)->syncUser($user, creating: false);
$user = SshUser::query()->create([
'ssh_server_id' => $server->getKey(),
'username' => 'deploy',
'name' => 'Deploy User',
'home_directory' => '/home/deploy',
'groups' => ['deploy'],
'comment' => 'Deployment user',
'is_root' => false,
'can_read_entries' => true,
'can_write_entries' => true,
'can_manage_entries' => false,
'managed_directories' => ['/srv/apps'],
'permissions' => [],
]);
app(SshUserManagerService::class)->syncUser(
$user,
server: $server,
creating: true,
keyPassphrase: 'secret-passphrase',
);
app(SshUserManagerService::class)->deleteUser($user, $server);
$key = app(SshUserManagerService::class)->generateKey(
user: $user,
server: $server,
label: 'deploy@host',
keyType: 'ed25519',
bits: null,
comment: 'Deploy key',
publicKeyPath: '.ssh/deploy.pub',
privateKeyPath: '.ssh/deploy',
passphrase: 'secret-passphrase',
);
use ZPMPackages\LaravelSshManagement\Services\SshManagerResolver;
$resolver = app(SshManagerResolver::class);
$usesDatabase = $resolver->usesDatabase();
$serverModelClass = $resolver->serverModelClass();
$currentConfiguredServer = $resolver->currentConfiguredServer();
$candidates = $resolver->listCurrentSystemUsernames();
$defaultManager = $resolver->defaultCurrentSystemUsername();
$manager = $resolver->forServer($currentConfiguredServer);
$systemUsers = $manager->scanSystemUsers();
use ZPMPackages\LaravelSshManagement\Services\SshSystemUserService;
$systemUserService = app(SshSystemUserService::class);
$candidates = $systemUserService->currentSystemManagerCandidates();
$defaultManager = $systemUserService->defaultCurrentSystemManagerUsername();
$systemUserService->changeCurrentSystemManagerUser($server, 'administrator', 'current-password');
$systemUserService->updateUserPassword($user, 'new-password');
'models' => [
'server' => App\Models\SshServer::class,
'user' => App\Models\SshUser::class,
'key' => App\Models\SshEntry::class,
],
bash
php artisan vendor:publish --tag=ssh-management-config
bash
php artisan migrate
bash
php artisan ssh-management:setup-db
bash
php artisan ssh-management:sync
bash
php artisan ssh-management:setup-db