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