Erstellen Sie einen auf Raspberry Pi basierenden RDP Thin Client

Mit der wachsenden Popularität von Mini-PCs wie Raspberry Pi und ähnlichen Klonen gab es viele Fälle für deren Verwendung in der IT-Infrastruktur des Unternehmens, in Smart Home / Cottage / Garage und in anderen Anwendungen.

Einer der bequemen und wünschenswerten Fälle ist die Verwendung von RPi als Thin Client, der über RDP eine Verbindung zu Windows-basierten Systemen herstellt.

Wenn Sie daran interessiert sind, einen solchen Ort auf der Basis des Raspberry Pi einzurichten und so zu "einrichten und vergessen" - willkommen bei der Katze. Es gibt ein fertiges Bild für die völlig Faulen (siehe Abschnitt 6.B).

Ein Bild, das Aufmerksamkeit erregt


Insbesondere musste ich meiner Erfahrung nach (Spezialist für Buchhaltung / Management-Automatisierung) häufig Arbeitsplätze organisieren, deren einziger Zweck darin bestand, auf ein Programm (meistens gelb), eine Office-Suite, das Internet und E-Mails zuzugreifen. Manchmal - mit Flash-Laufwerken arbeiten. Der Server war gleichzeitig bereits im Unternehmen.

Gleichzeitig war die Station geräuscharm, kompakt und zuverlässig. Oder lasst uns ehrlich sein, Billigkeit. Vor allem, wenn es um den Einzelhandel ging, in dem alles „festgenagelt“ werden sollte.

Gleichzeitig wurden in der Vergangenheit viele Lösungen in Form von spezialisierten „Eisen“ -Dünnclients ausprobiert, die sich jedoch aus verschiedenen Gründen als unangenehm herausstellten. Irgendwo waren bestimmte damit verbundene Aufgaben erforderlich, z. B. die Weiterleitung von Druckern an einen Server, die sie nicht bewältigen konnten. Irgendwo tauchten langsam Tische auf, was die Benutzer verrückt machte. Irgendwo arbeiteten Thin Clients einfach an einem Ort, und es war unmöglich zu verstehen, warum. Irgendwo funktionierte die launische Netzwerklast nicht oder die Parameter wurden nicht über DHCP übertragen.

Daher kam auf natürliche Weise alles zu dem Schluss, dass es einfacher ist, ein Junk-Nettop zu kaufen und ein Minimum an Software darauf zu installieren, als ein Spiel mit obskurem Eisen zu erraten, und das auf eigene Kosten, da nicht im Voraus bekannt ist, wo und was nicht funktioniert , aber es ist sicher bekannt, dass alles in Ordnung sein sollte und nicht so viel Zeit in Anspruch nehmen.

Der Artikel war etwas spät mit der Relevanz. Wenn Sie zu demselben gelben Programm zurückkehren, hat die Plattform in den letzten Jahren einen eigenen Thin Client entwickelt, und die Relevanz der Bereitstellung im Remotedesktopmodus hat abgenommen.

Es gibt jedoch auch eine Reihe anderer Aufgaben, bei denen eine über RDP verbundene leise und zuverlässige Workstation geeignet ist. In den letzten Jahren sind die Kosten für Mini-PCs erheblich gestiegen, und die Kosten für Standard-Computer und -Nettops sind rentabler geworden (Hardwarekosten, eine Stunde Facharbeit plus CAL / TCAL-Lizenzen für Windows Server), um genau solche Lösungen zu erstellen.

Erklärung des Problems


Auf der Basis von Raspberry Pi müssen wir also einen Thin-RDP-Client bereitstellen, der sich an einen bestimmten Server „nagelt“ und bei einem Ausfall eine erneute Verbindung herstellt.

Jegliche Benutzerinteraktion mit dem Gerät selbst sollte ausgeschlossen werden. Dementsprechend keine lokalen Desktop- und Konsolenbefehle. Das Passwort wird nur für die RDP-Sitzung eingegeben.

Als Bonus - organisieren Sie automatisch einbindende und austauschbare USB-Laufwerke.

Gegeben:

  • reiner Himbeer-Pi 3 Modell B 1 Gb oder 4 Modell B 1 Gb
  • 5V 2A Netzteil,
  • HDMI-Kabel
  • Adapter mit HDMI an den Monitor (wenn der Monitor keinen eingebauten HDMI-Anschluss hat),
  • Ethernet-Kabel (oder Vorhandensein eines WiFi-Netzwerks),
  • MicroSD-Speicherkarte mit 8 GB oder mehr (4 GB sind objektiv genug, aber es scheint mir, dass Sie eine 4 GB-Karte nur im Museum kaufen können).
  • Monitor, Tastatur, Maus für Himbeere.

Zum Zeitpunkt der Installation - ein Computer (Laptop) mit Windows oder Linux, ein microSD-Kartenadapter dazu.

Es wird davon ausgegangen, dass der Leser über grundlegende Kenntnisse in der Verwaltung von Linux-Systemen verfügt und die Frage „Erstellen und Bearbeiten einer Datei, Kopieren und Einfügen des Texts aus diesem Artikel“ oder „Herstellen einer Verbindung über SSH“ keine Probleme verursacht. Manchmal erlaube ich mir jedoch einen tieferen Ausflug für diejenigen, die Raspbian nicht speziell kennengelernt haben.

Allgemeine Logik: Konfigurieren Sie das Basissystem, installieren Sie den RDP-Client, konfigurieren Sie die automatische Anmeldung, testen Sie, beheben Sie Probleme.

Es wird auch beschrieben, wie eine fertige Baugruppe auf eine andere Himbeere geklont wird.

Das Software-Layout selbst ist unkompliziert, es wurde in der einen oder anderen Form vor ungefähr 9 Jahren geboren - wie ich mich erinnere, habe ich es unter Debian Etch gemacht. Seitdem hat es sich ein wenig von Software- und Hardwareversionen zu Versionen gewandelt, und jetzt ist es Zeit, es auf Raspberry zu portieren.

Der geplante Zeitaufwand beträgt ca. 30 Minuten.

1. Einrichten des Basissystems


1.1 System-Image herunterladen


Wir werden Raspbian als System wählen.

Zum Zeitpunkt des Schreibens kann dies hier durchgeführt werden . Die aktuelle Version ist Buster.

Wählen Sie Minimal Image Based on Debian Buster.



Laden Sie das ZIP-Archiv herunter, aus dem Sie die einzige IMG-Datei erhalten.



1.2 Schreiben Sie es auf eine Flash-Karte


a) Unter Windows

Laden Sie das Rufus- Programm von der offiziellen Website herunter. Eine portable Version reicht aus.

Führen Sie das Programm aus, wählen Sie die SD-Karte und das Bild aus dem Archiv in Abschnitt 1.1.



Drücken Sie die Taste “START”, bestätigen Sie die Zerstörung der Daten auf der SD-Karte und warten Sie, bis der Vorgang abgeschlossen ist (ca. 5 Minuten).

Entfernen Sie die Karte sicher.

b) unter Linux

Führen Sie den Befehl aus:

# dd if=2019-09-26-raspbian-buster-lite.img of=/dev/< SD-> bs=4M 

Warten Sie, bis der Vorgang abgeschlossen ist, und ziehen Sie die Karte heraus.

1.3 Stellen Sie das System für RPI bereit


Wir ordnen die Karte auf dem Zielgerät neu an. Wir verbinden den Mini-PC mit einem Monitor, einer Tastatur und einer Maus und schalten ihn ein.

Nach einiger Zeit startet der Mini-PC ohne zusätzliche Fragen neu in das frisch bereitgestellte System und fordert Sie auf, Ihren Benutzernamen und Ihr Kennwort einzugeben.
Standardmäßig ist dies pi: himbeere.



1.4 Melden Sie sich an und ändern Sie Ihr Passwort


 # passwd pi 

oder

 $ sudo passwd pi 

(Ich führe absichtlich passwd für den Benutzer pi als root aus, damit Raspbian uns nicht mit den Sicherheitsanforderungen für das Passwort plagt, sondern es akzeptiert und akzeptiert)

Sie können sich nicht direkt als root anmelden, es sei denn, Sie haben explizit ein Passwort dafür festgelegt. Im Allgemeinen ist das nicht schlecht. Dann sollten alle Befehle, die unter dem Superuser ausgeführt werden müssen, vom Benutzer pi mit dem Befehl sudo prefix ausgeführt werden. Wie in Ubuntu.

Zum Beispiel (ein berühmter Witz, lauf nicht weg! )

 $ sudo rm -rf --no-preserve-root 

Da ich jedoch pathologisch faul bin und mich bei Raspbian oder auf demselben Ubuntu anmelde, gebe ich Folgendes ein:

 $ sudo bash 

Und ich bekomme die Einladung #, bereits mit erhöhten Rechten. Also arbeite ich.
Genau genommen ist das nicht gut, aber in der Phase der Ersteinrichtung des Systems spart es viel Zeit.

Wenn den obigen Befehlen ein # vorangestellt ist, müssen sie nachfolgend unter dem Superuser ausgeführt werden. Wenn mit $, dann unter dem Benutzer (normalerweise wird oben angegeben, unter welchem).

2. Installieren Sie die erforderliche Software "mindestens" und testen Sie die Verbindung


2.1 Netzwerk konfigurieren


Führen Sie dazu das Verwaltungsdienstprogramm aus, indem Sie den folgenden Befehl ausführen:

 # raspi-config 



(Navigation erfolgt durch Pfeile, Tabellierung, Enter - Auswahl, ESC - Return)
Gehen Sie zu Netzwerkoptionen .

Stellen Sie den Computernamen (Punkt N1 Hostname ) ein, zum Beispiel TERM1 .

Wenn der Computer über ein Ethernet-Kabel mit dem Netzwerk verbunden ist und eine DHCP-Adresse erhält, muss nichts weiter getan werden.

Wenn Sie ein WiFi-Netzwerk konfigurieren müssen, tun Sie dies (Punkt N2 Wi-Fi ). Wähle dein Land. Der Netzwerkname muss manuell eingegeben werden, es erfolgt keine Übersicht. Wir geben das Passwort an .

Dann Fertig stellen -> Fertig stellen .

Auf Anforderung oder mit dem folgenden Befehl neu starten:

 # reboot 

Stellen Sie nach dem erneuten Anmelden sicher, dass Sie über einen Internetzugang verfügen.

 # ping 8.8.8.8 

2.2 System aktualisieren


Aktualisieren Sie die Informationen zu verfügbaren Paketen.

 # apt-get update 

Aktualisieren Sie nun das System (Optional, aber höchst wünschenswert. Kann später durchgeführt werden.)

 # apt-get upgrade 

Diese Phase kann sehr lange dauern (ich habe ungefähr 15 Minuten Zeit), da das RPi des binären Bootloaders aktualisiert wird, wodurch viele kleine Dateien auf die SD-Karte entpackt werden.
Bitte beachten Sie, dass fast unmittelbar nach Abschluss des Downloads und Beginn des Entpackens ein böses Paket Sie auffordert, "q" zu drücken, um den Vorgang abzubrechen. Sie müssen klicken, bevor Sie durch andere Dinge abgelenkt werden, um zu warten.
Am Ende des Updates sollten Sie einen Neustart durchführen

 # reboot 

2.3 Installieren Sie das russische Gebietsschema und Layout


Nochmals im Verwaltungsdienstprogramm:

 # raspi-config 

Befolgen Sie die Lokalisierungsoptionen , dort:

  1. Gebietsschema ändern , * von de-DE.UTF-8 entfernen und gegenüber ru-RU.UTF-8 installieren. Wir bestätigen, und im nächsten Fenster wählen wir es als Hauptfenster aus.
  2. Ändern Sie die Zeitzone und wählen Sie die Zeitzone Ihres Landes und Ihrer Stadt aus.
  3. Ändern Sie das Tastaturlayout , dort Allgemeiner PC mit 105 Tasten (Intl)SonstigesRussischRussischStrg + Umschalt (oder Alt + Umschalt, falls gewünscht, um das Layout zu wechseln) → Kein temporärer UmschalterRechts Alt (AltGr)Keine Compose-Taste .

Bestätigen und beenden - Fertig stellenFertig stellen .

Wir haben das Administrationsprogramm verlassen und führen den folgenden Befehl aus:

 # dpkg-reconfigure console-setup 

Wählen Sie UTF-8 aus.Erraten Sie den optimalen Zeichensatz.Lassen Sie das System ... (unten) auswählen . → 8x16 .

Die Schriftarten sollten dann optisch dünner werden. Hauptsache, sie unterstützen jetzt das kyrillische Alphabet.

Wir starten neu, melden uns an, testen das englische Layout, die Umschaltung und das russische Layout.

2.4 Bestimmt mit Hilfssoftware und Editor


Für die Arbeit mit Dateien, das Navigieren in der Ordnerstruktur und das Bearbeiten von Dateien mag ich Midnight Commander sehr , deshalb:

 # apt-get install mc 

Ich starte es unter root-Rechten, und wenn ich den Editor zum ersten Mal benutze (F4-Taste auf einer Datei), wähle ich mcedit (Punkt 2).

Natürlich können Sie Dateien mit den Werkzeugen Ihrer Wahl bearbeiten. Zum Beispiel mit Nano oder sogar VIM.

2.5 Installieren Sie den SSH-Server


 # apt-get install ssh 

Bearbeiten von / etc / ssh / sshd_config. Kommentiere die Zeile aus:

 ListenAddress 0.0.0.0 

Autoload entsperren

 # systemctl enable ssh.service 

Starten Sie den Dienst neu

 # systemctl restart ssh.service 

Die IP-Adresse ermitteln wir mit dem Befehl

 # ifconfig 

Und jetzt können wir vom Quellcomputer aus über SSH eine Remoteverbindung zum Gerät herstellen (unter Windows mag ich den PuTTY SSH-Client persönlich), um die Konfiguration von einer praktischen Arbeitsstation aus vorzunehmen und in der Lage zu sein, die Texte aus diesem Artikel in configs zu kopieren und einzufügen. Ich erinnere Sie daran, dass der Login pi ist , nicht root.



Weitere Aktionen würde ich genau durch SSH empfehlen, sofern nicht anders angegeben.

2.6 Verschieben Sie flüchtige Partitionen auf virtuelle Festplatten


Zum Beispiel / tmp und / var / log , um:

  1. Das System hat keine SD-Karte geschärft.
  2. Es bestand eine geringere Wahrscheinlichkeit, dass das Root-Dateisystem bei einem Stromausfall auseinanderfiel.
  3. Damit in ferner Zukunft die Protokolle nicht den freien Speicherplatz auf der Karte verstopfen.

Fügen Sie dazu Zeilen zu / etc / fstab hinzu :

 tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0 tmpfs /tmp tmpfs defaults,noatime,nosuid,size=100m 0 0 

Vergessen Sie nicht, einen Zeilenumbruch am Ende der Datei einzufügen.

Hier werden den Abschnitten / var / log und / tmp jeweils 100 MB Speicher zugewiesen (wird nur verwendet, wenn er voll ist). Gigabyte Pi, das nur für RDP verwendet wird, wird diese Ausgaben nichts behindern.

Starten Sie das System neu und führen Sie den folgenden Befehl aus:

 # df 

und stellen Sie sicher, dass die Partitionen auf tmpfs gemountet sind (3 und 4 Spalten können unterschiedlich sein):

 tmpfs 102400 8 102392 1% /tmp tmpfs 102400 224 102176 1% /var/log 

2.7 Wir erhalten den Benutzer, unter dem wir anschließend automatisch die grafische Shell starten


Führen Sie den Befehl aus:

 # adduser user 

Legen Sie ein beliebiges Passwort fest. Alle Arten von Namen und Telefonen können übersprungen werden. Bestätige.

2.8 Installieren Sie X-Server in einer minimalen Version


Führen Sie den Befehl aus:

 # apt-get install xserver-xorg xinit xterm x11-xserver-utils 

Dies kann ungefähr 5 Minuten dauern.

Jetzt müssen Sie am physischen Terminal sitzen (im Sinne eines Monitors, einer Tastatur und einer Maus, die direkt mit dem Pi verbunden sind), sich als Benutzer user anmelden und den Befehl ausführen:

 $ startx 

Das folgende Bild sollte auf dem Bildschirm angezeigt werden. Dies bedeutet, dass x-server erfolgreich installiert wurde und Sie fortfahren können.



Wir bewegen uns über dem Cursor (es ist wichtig, dass kein Fenster einen Rahmen und einen Fenstertitel bildet und das Fenster einfach keinen Text ohne expliziten Fokus empfängt) und tippen

 $ exit 

zurückkommen.

2.9 Installieren Sie die Software für die Arbeit mit dem Remotedesktop


Ich persönlich mag rdesktop . Es ist natürlich nicht ohne Nuancen (siehe Abschnitt "Rechenextraktion"). Es gibt Alternativen wie xfreerdp , remmina usw., obwohl sie sich auch darüber beschweren.

Ich werde ein Beispiel für die erste geben.

 # apt-get install rdesktop 

Erstellen Sie ein Skript, mit dem rdesktop im Vollbildmodus ausgeführt wird. Erstellen Sie im Verzeichnis / home / user die runrdp- Datei (vorzugsweise als Benutzer):

 #!/bin/bash rdesktop <  IP  > -u <   > -f -z 

Wenn Sie einen anderen RDP-Client ausgewählt haben, schreiben Sie hier die Befehlszeile dafür oder verwenden Sie die Masse der zusätzlichen Parameter, die rdesktop hat. Sie können das Passwort sogar fest codieren, um sich automatisch anzumelden.

Sie müssen die Berechtigungen zum Ausführen dieses Skripts festlegen. Wenn Sie es als Root erstellt haben, ist der Eigentümer der Benutzer.

 # chmod 755 /home/user/runrdp # chown user:user /home/user/runrdp 

Gehen wir nun zur physischen Konsole unter Benutzer und starten Sie startx. Geben Sie in das geöffnete Grafikterminal (siehe Abbildung oben) Folgendes ein:

 $ ./runrdp 

Das Fenster zum Herstellen einer Verbindung mit dem Remotedesktop sollte auf dem Bildschirm angezeigt werden.



Wenn:

a) Die Konsole zeigt etwas über den CredSSP-Fehler an.
b) Der Vollbildmodus in FullHD hinterlässt dunkle Ränder (wie im Foto Nr. 4 in diesem Artikel, obwohl es einen Konsolenmodus gibt, aber Sie können die Ränder sehen)
Dann lesen Sie den Abschnitt Rake-Extraktion.

Und wenn alles in Ordnung ist, brechen Sie die Systemanmeldung ab (Esc oder den Menüpunkt "Deaktivieren"), verlassen Sie das x-terminal, geben Sie exit ein und kehren Sie zur Konsole zurück.

3. Automatisierung von Hebevorgängen


Wenn alle vorherigen Schritte funktionieren, ist es Zeit, alles zusammenzusetzen.

Zu diesem Zweck stellen wir sicher, dass sich der Benutzer beim Systemstart automatisch beim Terminal anmeldet, den X-Server startet und eine Verbindung mit dem darunter befindlichen RDP herstellt. Aus diesem Grund wird das Kennwort nur für die RDP-Sitzung angefordert. Dies erspart unreifen Benutzern unnötige Kenntnisse beim Bändigen von Linux.

3.1 Unendlich RDP


Erstellen wir ein Skript, das beim Starten des X-Servers endlos versucht, eine RDP-Sitzung zu öffnen.
Erstellen Sie dazu im Verzeichnis / home / user eine Autorun-Datei am Anfang der X-Session .xinitrc mit folgendem Inhalt:
 setxkbmap -option terminate:ctrl_alt_bksp #    Ctrl-Alt-BkSpace setterm -blank 0 -cursor off #   xsetroot -solid gray #      while /bin/true; do ./runrdp done 

3.2 Unendlicher X-Server


Wir korrigieren ein Skript, das den automatischen Start von Programmen und Profileinstellungen während der Konsolenanmeldung definiert, sodass die X-Sitzung automatisch gestartet wird, jedoch nur, wenn sich der Benutzer beim ersten Terminal anmeldet.

Vielen Dank an gecube , der mich daran erinnert hat, den Bildschirmschoner zu deaktivieren. Standardmäßig handelt es sich um einen schwarzen Bildschirm, der für die meisten modernen Monitore eher schädlich ist.


Bearbeiten wir /home/user/.profile und fügen dort die folgenden Zeilen hinzu:

 if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear echo " 5    " sleep 5 exit fi 

3.3 Testen Sie einen Haufen


Wir starten Pi neu, setzen uns ans Terminal, melden uns als Benutzer user an. Wir erhalten das Sitzungsstartfenster auf dem Bildschirm, wie in der Abbildung oben.

Wir versuchen, die Eingabe des Passworts zu verweigern (esc oder abhängig von der Windows-Version) - wir erhalten das gleiche Fenster zum Start der Sitzung (d. H. Unser Skript von 3.1 wird ständig neu verbunden).

Wir warten ungefähr eine Minute (abhängig vom Server), ohne die Tastatur und die Maus zu berühren - das Fenster zum Starten der Sitzung sollte sich bald ausschalten (die RDP-Sitzung in der Phase der Passworteingabe ohne Aktivität läuft in einem Timeout ab). Es wird sich natürlich aufgrund von Abschnitt 3.1 wieder verbinden.

Drücken Sie jetzt Ctrl + Alt + BkSp . Sollte die X-Sitzung unterbrochen werden, wird eine Meldung mit einer Wartezeit von 5 Sekunden angezeigt, wonach auch die Konsolensitzung endet. Der Bildschirm fordert Sie auf, das Terminal mit einem Benutzernamen und einem Passwort zu betreten.

Wenn alles so ist - ausgezeichnet.

Wir brauchen nur eine automatische Anmeldung am Terminal.

3.4 Unendlich leckeres, sich wiederholendes Orange- Autologin bei tty1


Erstellen Sie dazu im Stammverzeichnis die Datei /etc/systemd/system/getty@tty1.service.d/autologin.conf mit dem folgenden Inhalt:

 [Service] ExecStart= ExecStart=-/sbin/agetty --autologin user --noclear %I 38400 linux 

Dann:

 #systemctl enable getty@tty1.service 

Wir starten neu, stellen sicher, dass die physische Konsole automatisch als Benutzer angemeldet wird, der X-Server startet und die RDP-Sitzung geöffnet wird, und dann ist alles wie in 3.3.
Drücken Sie Strg + Alt + BkSp, und warten Sie, bis die Verbindung wiederhergestellt ist.

Wir betreten das System, testen das Schalten, die Arbeit der Layouts. Wenn etwas nicht stimmt, siehe Abschnitt 4.

Damit ist die Einrichtung abgeschlossen.

Benutzer sollten darauf hingewiesen werden, dass sie bei einem Fehler (der Bildschirm wird dunkel, etwas friert ein usw.) zuerst die Tastenkombination Strg + Alt + BkSp drücken und auf die Reaktion warten müssen.

Siehe auch Abschnitt 5 zur automatischen USB-Einbindung.

4. Rechenextraktion


Da es sich um OpenSource handelt, ist die Rake-Extraktion ein verzweifelter und kontinuierlicher Prozess. Ich werde versuchen, den wichtigsten möglichen Schwader zu skizzieren, aber wer weiß, was uns erwartet. Ich persönlich hatte nie Glück, und ohne stundenlanges Suchen hat für mich kein einziger Befehl funktioniert.

4.1 Probleme bei unvollständiger Nutzung der Bildschirmauflösung


Symptome: In einigen Fällen (HDMI-DSUB-Adapter, einige Monitore) verwendet raspbian nicht die gesamte verfügbare Auflösung eines Full-HD-Monitors. Dunkle Felder verbleiben zwischen den relevanten Informationen und dem physischen Rand des Bildschirms.

Es wird wie folgt gelöst:

Bearbeite /boot/config.txt und finde die Zeile

 # disable_overscan = 1 

und kommentiere es aus.

Starten Sie neu.

Jetzt sollten die dunklen Felder von den Rändern des Bildschirms sowohl im Konsolen- als auch im Grafikmodus entfernt werden.

4.2 Probleme mit dem Mauszeiger beim Anschließen von rdesktop an moderne RDP-Server


Dies betrifft hauptsächlich Windows 2012, 2016 und Windows 10, in denen das Cursorthema enthalten ist.

Symptome: Der Cursor verschwindet, ist schlecht gezeichnet, nach dem Umschalten auf Nicht-Standard (Sanduhr, I-Symbol, Fensterverbreiterungspfeile usw.) wird vergessen, auf einen regulären Pfeil umzuschalten.

Lösung: Wechseln Sie als Benutzer des Servers, zu dem Sie eine Verbindung herstellen, über das Bedienfeld zu den Eigenschaften der Maus, setzen Sie das Thema auf "Nein" zurück und deaktivieren Sie die Schatten unter dem Mauszeiger.



Cursor müssen zum Gehorsam kommen.

4.3. Codierungsprobleme mit rdesktop


Symptome: In einigen Fällen werden über die RDP-Verbindung Sonderzeichen auf dem Remotesystem falsch eingegeben: Tilden, Schrägstriche, Anführungszeichen, Punkte, vertikale Sticks. Fangen Sie besonders an, die Punkte zu verärgern, weil sie häufig getippt werden.

Lösung:

Erstellen Sie in / usr / share / rdesktop / keymaps eine Rohdatei und füllen Sie sie mit folgendem Inhalt:

 include common map 0x419 grave 0x29 asciicircum 0x07 shift backslash 0x2b bar 0x2b shift apostrophe 0x28 greater 0x34 shift less 0x33 shift 

Fügen Sie der Eingabeaufforderung rdesktop im Skript / home / user / runrdp das Argument -k raw hinzu . Zum Beispiel:

 rdesktop 10.0.0.1 -u user -k raw 

Starten Sie die Sitzung auf dem Terminal mit Strg + Alt + BkSp neu oder starten Sie den Pi generell neu.

Geben Sie RDP ein, testen Sie alle Sonderzeichen, einschließlich Mit der Umschalttaste in der Zahlenzeile der Tastatur und den Seitentasten links und rechts neben dem Buchstabenbereich, mit und ohne Umschalttaste (Anführungszeichen, Doppelpunkte, Satzzeichen, Sticks usw.). Alles sollte funktionieren.

4.4. Wenn Sie versuchen, rdesktop zu starten, wird die Sitzung nicht geöffnet und der Fehler CredSSP in der Konsole angezeigt


 CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server. 

Das Zielsystem erfordert einen modernen Client-Authentifizierungsalgorithmus, den rdesktop normalerweise nicht kann.

Lösungsoptionen:

  1. Deaktivieren Sie die Serverauthentifizierung, indem Sie die Sicherheitseinstellungen verringern. Grundsätzlich sollte dies in Umgebungen, in denen Pi versucht, RDP als Client zu verwenden, kein zu großes Sicherheitsproblem darstellen.
  2. Verwenden Sie einen anderen Client, z. B. freerdp, remmina, und ersetzen Sie den Inhalt des runrdp-Skripts durch die Startzeile dieses Clients.
  3. Installiere und konfiguriere den Kerberos-Client, aber irgendwie ist dort alles kompliziert. Wenn Sie es versuchen möchten, beginnen Sie hier .

4.5. Schalten Sie das Gerät ein und aus


Raspberry Pi hat keine Abschalttaste. Das ist schlecht. Es stellt sich heraus, dass es keine effektive Möglichkeit gibt, es ein- und auszuschalten. Es wurde viel darüber geschrieben, ich werde versuchen, es kurz zusammenzufassen:

  1. Einerseits können wir das Gerät überhaupt nicht ausschalten, sondern nur den Monitor ausschalten. Genau genommen ist alles erledigt, wo ich das RPi abgelegt habe. Im Allgemeinen erwärmt sich das Gerät fast nicht, verbraucht keinen Strom und macht keine Geräusche. Vor dem Verlassen des Monitors wird der Benutzer ausgeschaltet.
  2. Sie können die Nachtabschaltung von Cron konfigurieren, aber um das RPi am Morgen einzuschalten, muss der Benutzer den Draht oder das Netzteil unter Kontrolle bringen.
  3. Sie können dieses Problem lösen, indem Sie ein USB-Versorgungskabel mit einem offenen Knopf kaufen (um das RPi einzuschalten, müssen Sie den Stromkreis nur kurz mit einem Knopf öffnen). 120 Rubel ist alles ein Vergnügen. In diesem Fall wird das automatische Herunterfahren jedoch genauso ausgeführt wie der Absturz des Geräts. Angesichts der Tatsache, dass wir die flüchtigen Partitionen auf tmpfs verschoben haben, ist es wahrscheinlich unwahrscheinlich, dass es Probleme geben wird, aber dennoch ist niemand sicher, dass der Benutzer am Morgen aufgrund des Zusammenbruchs von rootfs nicht angemeldet wird. Es hat sozusagen nicht geklappt, die Lösung "festgenagelt".
  4. Es gibt Lösungen mit einer zusätzlichen Taste, die im GPIO-Anschluss enthalten ist und das Gerät vorsichtig (auf die richtige Weise) ein- und ausschaltet. Aber Kollektivwirtschaften bauen auf - es gilt Stunden zu verbringen und die Produktionskosten zu erhöhen.
  5. Für das RPi gibt es jedoch sogar ein Gehäuse mit einem eingebauten Knopf (die Chinesen haben alles). Aber ich persönlich habe es noch nicht ausprobiert.
  6. Ich denke darüber nach, das Gerät über einen Unterbrecher im USB-Kabel einzuschalten und es über eine vom Systemdienst überwachte Tastenkombination (z. B. Strg + Alt + Umschalt + P) auszuschalten. Diese Lösung ist jedoch nicht möglich.

4.6 Mehrere Wiederverbindungen zum RDP-Server


Im aktuellen Schema stellt das Clientgerät über das RDP-Protokoll eine Verbindung zum Server her, zeigt das Anmelde- und Kennworteingabefenster an. Wenn der Benutzer nichts eingibt, wird die Sitzung nach einiger Zeit zurückgesetzt und der RDP-Client wird erneut gestartet.

In den Kommentaren teilte der Mnemonik- Benutzer mit , dass Windows Server bei mehreren dauerhaften Wiederverbindungen nicht mehr genügend Arbeitsspeicher zur Verfügung stehe , und gab ein Beispiel zur Lösung des Problems.

Ich werde meins bringen. Das Skript .xinitrc wird so geändert, dass nach Abschluss des nächsten rdesktop-Vorgangs ein modales Dialogfeld auf dem Bildschirm angezeigt wird, das den Neustart verhindert, bis auf die Schaltfläche OK geklickt wird.

Dazu können Sie die normale xmessage verwenden, die im xorg-Paket enthalten ist, aber die von ihr erstellten Fenster sind so hässlich, dass mein Monitor knackt. Darüber hinaus ist diese Anwendung nicht mit der russischen Sprache vertraut, und das Einschalten ist eine weitere Aufgabe.

Ich bin beeindruckt von gxmessage, ohne diesen Nachteil, aber es zieht GTK und 25 Megabyte an anderen Abhängigkeiten, die ich auch nicht mag. Nun, wählen wir ein kleineres Übel:
 apt-get install gxmessage 

Ändern Sie das Skript .xinitrc:
 setxkbmap -option terminate:ctrl_alt_bksp #    Ctrl-Alt-BkSpace setterm -blank 0 -cursor off #   xsetroot -solid gray #      while /bin/true; do ./runrdp gxmessage --center " OK      RDP" done 

Jetzt wird zwischen den Verbindungsversuchen von rdesktop mit dem Server eine entsprechende Meldung auf unserem Bildschirm angezeigt, und der Server wird nicht ständig bombardiert.

Nachdem Sie das Skript problemlos beendet haben, können Sie die Netzwerkverfügbarkeit des Servers vorab überprüfen und eine Meldung zum erneuten Herstellen der Verbindung anzeigen, wenn keine Kommunikation besteht.

4.7 NTP konfigurieren


Vielen Dank an gecube , der mich an diesen Moment erinnert hat. Theoretisch kann die Zeit auf dem Gerät mit der Zeit "vergehen", was zu Schwierigkeiten bei der Authentifizierung und möglicherweise zu anderen Problemen führen kann.
Um dieses kleine Problem zu beheben, sollten Sie das Programm ntpdate installieren und bei cron eine Task registrieren, um die Uhrzeit stündlich zu aktualisieren (das Gerät benötigt Internetzugang):

 # apt-get install ntpdate # echo "0 * * * * root ntpdate pool.ntp.org" > /etc/cron.d/ntp 

Wenn Sie einen lokalen NTP-Server in Ihrem Netzwerk haben, ersetzen Sie den Hostnamen durch Ihren eigenen.

5 Optional: Anschließen, Trennen und Weiterleiten von USB-Geräten


Tatsächlich umfasst dieser Abschnitt zwei entscheidende Phasen. Erstens, um USB-Geräte so zu verwalten, dass deren automatische Bereitstellung und zumindest einigermaßen benutzergesteuertes Entfernen sichergestellt ist. Und zweitens leiten Sie die angeschlossenen Geräte an das Terminal weiter, damit sie über das Netzwerk erreichbar sind.

5.1. Automount-Setup


Plug-in-USB-Geräte mit Dateisystemen werden in Unterverzeichnissen des Verzeichnisses / media bereitgestellt. Wir leiten dann dasselbe Verzeichnis an rdesktop weiter.

Wir brauchen das pmount-Paket.

 # apt-get install pmount. 

udev, .

/etc/udev/rules.d 80-usbstick.rules :

 ACTION=="add", KERNEL=="sd[az][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k" 

systemd.

/lib/systemd/system usbstick-handler@.service :

 [Unit] Description=Mount USB sticks BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/bin/pmount --umask 000 --noatime -w --sync /dev/%i /media/%i ExecStop=/usr/bin/pumount /dev/%i 

/usr/local/bin unmount-devices :

 #!/bin/bash for folder in /media/*; do pumount $folder echo "Unmounted $folder" done 

.

 #chmod 755 unmount-devices 

user plugdev, (pumount )

 # adduser user plugdev 

. , USB -, , /media sda1 ., -.

—sync, , , , , .

( , , Windows ).

Pi , , /media/sda1 .
unmount-devices user. sda1 /media , , Windows.

5.2 /media RDP


/home/user/runrdp rdesktop :

 rdesktop …... -r disk:USB=/media/ 

/home/user/.profile , unmount-devices.

 ... if [ -z "$DISPLAY" ] && [ $(tty) = "/dev/tty1" ]; then startx clear unmount-devices echo " 5    " sleep 5 exit fi 

.

, RDP-, Pi USB-, , , .



, (sda1-xx, sdb1-xx ..)

, Ctrl+Alt+BkSp. ( - , ), ( ) 5 RDP.
, , , . .

.

6. Rpi


6.


, , . , .
SD- ( 16- ) -, USB- Raspberry.

,

 # unmount-devices 

SD-, , , /media/sdxx.

lsblk :

 sda 8:0 1 14.6G 0 disk └─sda1 8:1 1 14.6G 0 part mmcblk0 179:0 0 7.4G 0 disk ├─mmcblk0p1 179:1 0 256M 0 part /boot └─mmcblk0p2 179:2 0 7.2G 0 part / 

sda , mmcblk0 – .
:

 dd if=/dev/mmcblk0 of=/dev/sda bs=4M 

, ( 8 ).

Raspberry, , runrdp, .

6.


, , , , , . - , , .. — , Windows 10, Microsoft, RPi .
, SD- 2 () (1977614336 ). , 1966080000 , SD-.

:
1) (MD5: 0B5033A9CA12BA8299340BC482111998) .
2) SD-, , , 1.2.
3) , Ctrl+Alt+F2 .
pi, 111. :

 $ sudo bash 

4) 1.4, 2.1, , ( ping, ).
5) raspi-config, Advanced Options, Expand Filesystem ( SD- )
6) /home/user/runrdp, «» IP- , «user» , .
7) .

Fazit


, . , - .
, . , , .

PS 11.12.2019. (gecube, Mnemonik, mkovalevskyi, SannX) . :
  • ;
  • NTP;
  • RDP- — messagebox .

, , RPi3, RPi4 Model B 1Gb. - . , RPi 4, .

, (. 6.), , .

Source: https://habr.com/ru/post/de479504/


All Articles