Servir un terminal distant - un véritable shell sur une prise WebSocket

FeatureSecurityService
Expédié
3 septembre 2026 à 17:33 UTC
Auteur
Kamo
Commite
77f7021

P passe un navigateur à un PTY sur la machine de développement du membre. Les trames binaires sont le terminal, les trames de texte sont contrôlées; à l'arrière-plan, un HTTP 101 sur un Un flux préfixé de longueur atteint l'agent sur le port déjà la politique du réseau permet, donc aucune modification du cilium n'est nécessaire. Le premier WebSocket dans ce service, et délibérément un logiciel brut. STOMP est un courtier de message sur un socket et ce qui voyage ici est un flux d'octets entre un un navigateur et un shell - une enveloppe autour de chaque frappe n'achète rien. L'AUTORISATION S'est contentée de savoir si le cœur. Un navigateur ne peut pas mettre un en-tête sur un Le constructeur de WebSocket, plutôt que d'enseigner la poignée de main à l'analyse, un le critère d'évaluation authentifié ordinaire prend la décision entière avec la session en main et tends la main vers l'avant comme un billet à usage unique qui est sans valeur 30 secondes plus tard et encore après une utilisation. Cela reflète le lien KamoDesktop, qui était durci pour cette raison exactement: un jeton rejouable se trouve dans l'histoire et dans Ctrl-Shift-T, et un shell est pire à cet égard qu'un bureau, pas mieux. La poignée de main ne lit rien d'autre du client - pas un nom d'utilisateur, pas un Comptez, seulement une taille écoute l'agent pince de toute façon. Le compte Linux provient de WhatsFor(le propre membre de l'appelant) id), donc une demande ne peut pas nommer quelqu'un l'autre coquille, et l'Origine est épinglée à l'hôte qui s'adresse. Aucun mot de passe n'est lire du tout: l'agent est racine et tombe dans le compte, donc la réversible Les besoins du guacamole ne sont jamais abordés sur cette voie. Vérifié avant le fait, de manière synchrone, dans le même Log répond "qui s'est connecté d'où" - avec IP, geo-agent et utilisateur-agent, à HIGH sévérité. Une ligne qui n'apparaîtrait que sur le succès serait absente exactement des affaires C'est cette question. Huit bornes par membre, car chacune est un PTY et un thread sur un VM partagée qui a été prélevée par la pression de mémoire auparavant. Fermer la douille ne tue pas l'obus; l'agent le met sous tmux de sorte que rafraîchir ou une connexion abandonnée se rattache au travail en cours. 21 essais: à usage unique, expiration de part et d'autre de la frontière, silence de type «j'ête» le plafond par membre et ses jetons de libération non séquentiels, et le codec de trame y compris une livraison à un octet à un temps, une durée déclarée absurde, et la lecture la ligne d'état de la mise à niveau sans avaler le flux derrière elle.

Tous les changements

Comme ce que tu vois expédier ?

Chacune de ces mises à jour atterrit automatiquement dans votre espace de travail. Commencez gratuitement et regardez-le grandir semaine après semaine.

Commencez gratuitement pour toujoursPrix de visualisation