connect fix 3

This commit is contained in:
2026-08-20 23:35:42 +02:00
parent fc32b1e4ef
commit bf2a02679d
14 changed files with 956 additions and 49 deletions

View File

@ -0,0 +1,27 @@
-- Zwei Ursachen fuer nicht zustande kommende Sitzungen, siehe
-- app/ssh_proxy/proxy.py bzw. app/rdp_proxy/guacd_client.py.
--
-- 1) ssh_keys.passphrase_enc
-- asyncssh.import_private_key() wurde bisher IMMER ohne Passphrase
-- aufgerufen. Ein passphrasegeschuetzter Private Key (der Normalfall, wenn
-- ein Admin einen bestehenden Schluessel aus ~/.ssh einfuegt) laesst sich so
-- prinzipiell nicht laden -- jeder Verbindungsversuch endete in
-- asyncssh.public_key.KeyImportError:
-- "Passphrase must be specified to import encrypted private keys"
-- und damit in einer sofort wieder beendeten Sitzung. Die Passphrase wird
-- deshalb ab jetzt beim Anlegen/Rotieren des Schluessels mit erfasst und --
-- exakt wie das Schluesselmaterial selbst und die RDP-Passwoerter -- mit dem
-- KEK (AES-256-GCM, app/security/crypto.py, associated_data=b"ssh_key_passphrase")
-- verschluesselt abgelegt. NULL = Schluessel ist unverschluesselt (bisheriges
-- Verhalten, bleibt unveraendert gueltig).
ALTER TABLE ssh_keys ADD COLUMN passphrase_enc BLOB;
-- 2) hosts.rdp_ignore_cert
-- build_rdp_params() setzte "ignore-cert" hart auf "false". Windows-Ziele
-- praesentieren im Regelfall ein selbstsigniertes RDP-Zertifikat; guacd/
-- FreeRDP bricht den Verbindungsaufbau dann ab, bevor ueberhaupt ein Bild
-- entsteht. Die Entscheidung gehoert pro Host getroffen und nicht ins
-- Codeliteral: Default 1 (ignorieren, entspricht dem Verhalten jedes
-- gaengigen RDP-Clients); wer eine interne PKI betreibt, setzt den Wert pro
-- Host auf 0 und erzwingt damit die Zertifikatspruefung.
ALTER TABLE hosts ADD COLUMN rdp_ignore_cert INTEGER NOT NULL DEFAULT 1;