51 lines
1.8 KiB
PHP
51 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Services\Terminal\ServerIdentity;
|
|
use Illuminate\Console\Command;
|
|
|
|
/**
|
|
* Die öffentliche Hälfte der Serverkennung, eine Zeile, sonst nichts.
|
|
*
|
|
* Gerufen von `/usr/local/sbin/clupilot-host-step install-server-terminal` —
|
|
* der root-eigenen Hälfte auf dem Wirt, die daraus einen Eintrag in
|
|
* `/root/.ssh/authorized_keys` macht. Nach demselben Muster wie
|
|
* `apply-proxy-hosts`: der privilegierte Schritt HOLT sich den Wert selbst,
|
|
* statt ihn vom Dienstkonto gereicht zu bekommen, und prüft ihn dann hart.
|
|
*
|
|
* Nur die öffentliche Hälfte. Ausgabe eines Kommandos wandert in Protokolle
|
|
* und Terminalverläufe; was hier herauskommt, stünde ohnehin in jeder
|
|
* authorized_keys.
|
|
*
|
|
* Kein Erzeugen auf Zuruf: gibt es keine Kennung, endet das Kommando mit 3 und
|
|
* einem Satz, der sagt, wo sie entsteht. Ein Kommando, das im Vorbeigehen einen
|
|
* Schlüssel mintet, täte es unter niemandes Namen — und der Tresor hält fest,
|
|
* WER einen Wert gesetzt hat.
|
|
*/
|
|
class ServerTerminalKey extends Command
|
|
{
|
|
protected $signature = 'clupilot:server-terminal-key';
|
|
|
|
protected $description = 'Print the public half of the server terminal SSH identity';
|
|
|
|
public function handle(): int
|
|
{
|
|
$publicKey = ServerIdentity::publicKey();
|
|
|
|
if ($publicKey === null) {
|
|
$this->getOutput()->writeln(
|
|
'<error>Für den Server ist keine SSH-Kennung erzeugt. In der Konsole unter Einstellungen → Terminal zum Server anlegen.</error>',
|
|
);
|
|
|
|
return 3;
|
|
}
|
|
|
|
// Nur die Zeile, ohne Rahmen und ohne Farbe: der Aufrufer ist ein
|
|
// Skript, das sie zeichengenau weiterverarbeitet.
|
|
$this->getOutput()->writeln($publicKey);
|
|
|
|
return self::SUCCESS;
|
|
}
|
|
}
|