Bequeme Fernbedienung der Linux-Konsole unter Windows

Also Freunde, einige von uns (Menschen) haben das Gefühl, dass sie einen Computer (normalerweise einen Server) unter Linux fernsteuern müssen (die Methode funktioniert sowohl unter BSD als auch unter Mac OS X, aber ich habe es nicht versucht), indem sie ssh verwenden. Eine andere Untergruppe verwendet Windows als Betriebssystem auf dem Hauptproduktionscomputer. Der Schnittpunkt dieser Untergruppen wird in meinem Aufsatz angesprochen.

Dienstprogramme, für die das gesamte Universum konzipiert ist:
1. Aufrechterhaltung einer Verbindung, wenn die Verbindung getrennt wird. Dieser Punkt ist für mich der wichtigste und spielte eine entscheidende Rolle beim Aufbau eines solchen Systems. Tatsache ist, dass ich in einem Schlafsaal mit einem sehr, sehr instabilen Internet lebe und dass es jede Minute zu Verbindungsabbrüchen (an schlechten Tagen) kommen kann. Und Kitt erfordert eine Abfolge von Aktionen, um die Verbindung jedes Mal wieder herzustellen
2. Speichern Sie die Sitzung, einschließlich des aktuellen Verzeichnisses, des Befehlsverlaufs und der Ausgabe. Häufig ist die einzige Aufgabe beim Herstellen einer Verbindung zum Server: Wechseln Sie in dasselbe Verzeichnis und schreiben Sie git pull. Um den Pfad zu diesem Verzeichnis nicht jedes Mal abzurufen, müssen Sie Sitzung
3 speichern . Das Terminal unterstützt Registerkarten. Am wichtigsten ist, dass dieses Terminal auch für Cmd, PS und Git Bash Console verwendet werden kann. Daher müssen Sie nicht mehrere verschiedene Terminals offen halten.
4. Vorteile von tmux: Mehrere Fenster in einer Sitzung und Aufteilung

Bild

Das Erfolgsrezept umfasst mehrere Punkte:
  1. Terminal - ConEmu code.google.com/p/conemu-maximus5
  2. Sitzungsmanager - tmux tmux.sourceforge.net
  3. Konnektor zwischen Client und Server - mosh mosh.mit.edu
  4. Ausführen von * nix-Anwendungen unter Windows - cygwin www.cygwin.com


Außerdem benötigen wir für alle Manipulationen eine ähnliche Software:

  1. Putty oder ein anderer SSH-Client;
  2. Remote-Server (Ich verwende Ubuntu auf AWS, obwohl dies nicht von Bedeutung ist).


Was bekommen wir am Ende?


Als Ergebnis erhalten wir ein Terminal mit der Möglichkeit, auf eine Remote-Konsole zuzugreifen. Wenn die Verbindung getrennt wird (das Internet wird getrennt, die IP-Adresse wird geändert, das Routing wird geändert, die Verbindung ist instabil, der Laptop schläft ein usw.), müssen Sie keine neue Verbindung herstellen, und wenn Sie eine neue Verbindung herstellen, geht der Arbeitskontext nicht verloren.

Nun im Detail.

Konfiguration


Wir werden unser System schrittweise konfigurieren, beginnend mit einem Remote-Server. Wir verbinden uns via ssh und setzen ...

Tmux


Tmux ist ein Sitzungsmanager, wie man sagt, der Steroide untersucht. Zu meiner Distribution wurde tmux schon gebündelt, und wenn nicht, dann lege es:

sudo apt-get install tmux

Oder wir sammeln aus der Quelle:

git clone git://git.code.sf.net/p/tmux/tmux-code tmux
cd tmux
sh autogen.sh
./configure && make


Kurzer Spickzettel von tmux
Kopiert von http://habrahabr.ru/post/126996/

Eine sehr gute Möglichkeit, tmux auszuführen:
tmux attach || tmux new - Dabei versuchen Sie zunächst, eine Verbindung zu einem vorhandenen tmux-Server herzustellen, sofern einer vorhanden ist. Wenn noch keine vorhanden ist, erstellen Sie eine neue.

Danach befinden Sie sich in einer vollständigen Konsole.
Strg + Bd - Verbindung trennen. (Auf die gleiche Weise trennen Sie die Verbindung, wenn die Verbindung unterbrochen wird. So stellen Sie die Verbindung wieder her und arbeiten weiter, siehe oben.)

In einer Sitzung können beliebig viele Fenster vorhanden sein:
Strg + Bc - Fenster erstellen;
Strg + b 0 ... 9 - gehe zu einem solchen Fenster;
Ctrl + bp - gehe zum vorherigen Fenster;
Ctrl + bn - gehe zum nächsten Fenster;
Strg + Bl - Zum vorherigen aktiven Fenster wechseln (von dem aus Sie zum aktuellen gewechselt haben).
Ctrl + b & - schließe das Fenster (oder tippe einfach exit im Terminal ein).

In einem Fenster können sich viele Fenster befinden:
Strg + b% - teilen Sie das aktuelle Fenster vertikal in zwei Fenster auf .
Strg + b "- Teilen Sie das aktuelle Bedienfeld horizontal in zwei Teile (dies ist ein Anführungszeichen in der Nähe der Eingabetaste, nicht der Umschalttaste + 2).
Strg + b → ← ↑ ↓ - Wechseln Sie zwischen
den Bedienfeldern Typ Exit im Terminal)

Nachteil - Scrollen wird ungewöhnlich:
Strg + b PgUp - Aufrufen des "Kopiermodus", dann:
PgUp, PgDown - Scrollen;
q - Aufrufen des "Kopiermodus ".


Fügen Sie in der Konfiguration, die sich in ~ / .tmux.conf befindet, Folgendes hinzu:

new-session
set-window-option -g mode-mouse auf
set -g history-limit 25000


Die erste Zeile bedeutet, dass beim Versuch, eine Verbindung herzustellen, eine neue Sitzung erstellt wird, wenn keine aktive Sitzung vorhanden ist. Die zweite Zeile enthält Mausunterstützung, und die dritte Zeile legt die Größe der Story fest.

Mosh


Mosh in unserem Bundle ist ein System, das eine unterbrechungsfreie Verbindung gewährleistet. Wenn die Verbindung unterbrochen wird, wartet das Programm, bis die Konnektivität wiederhergestellt ist, und arbeitet ab dem Punkt des Stopps weiter. Es hilft auch bei langsamen / instabilen Verbindungen.

Wir installieren von den Quellen, um eine Version zu erhalten, die alle erforderlichen Funktionen unterstützt:

git clone https://github.com/keithw/mosh.git
cd mosh/
sudo apt-get build-dep mosh
./autogen.sh && ./configure && make
sudo make install


Eine spezielle Konfiguration ist nicht erforderlich.

Cygwin


Gehen Sie jetzt zur Client-Seite.

Cygwin ist eine alternative Implementierung der Linux-API, mit der Sie Linux-Dienstprogramme unter Windows verwenden können. Die Installation erfolgt von der offiziellen Website (https://cygwin.com/install.html). Ich habe x86_64-Version. Herunterladen, installieren.
Bei der Auswahl von Paketen (zusätzlich zu den Hauptpaketen) sollten mosh und ssh beachtet werden:

Bild

Es ist keine Konfiguration erforderlich.

Conemu


Der letzte Punkt ist ConEmu . Ein wunderbares Terminal für Fenster. Unterstützt eine Reihe von Funktionen, wie zum Beispiel:

  1. Tabs und Split-Screns;
  2. Arbeiten mit Konsolenanwendungen mithilfe der Konsolen-API.
  3. flexible Konfiguration und Verwaltung;
  4. Arbeit mit Blumen;
  5. ... und vieles mehr, Details zu diesem Terminal finden Sie im Artikel des Entwicklers.

ConEmu wird von der offiziellen Website installiert. Herunterladen, installieren (oder entpacken), ausführen. Lassen Sie beim ersten Start die Häkchen an Ort und Stelle. Öffne die Einstellungen für Win + Alt + P. Wir interessieren uns für den Artikel Aufgaben.

So sieht die Aufgabe beim Ausführen von cygwin aus:

Bild

Erstellen Sie ein solches Element für sich selbst, und möglicherweise müssen Sie den Pfad durch Ihren Installationspfad ersetzen:

C:\cool\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico -

Speichern, Einstellungen schließen, Cygwin im Dropdown-Menü neben dem Pluszeichen in der oberen rechten Ecke auswählen.
Jetzt müssen wir eine SSH-Verbindung zu unserem Server herstellen.

Mein Befehl sieht so aus:

ssh -i key2014.pem -p 22

key2014.pem ist mein SSH- Zugriffsschlüssel für private Instanzen in AWS. Vielleicht sollte es von der Windows-Festplatte (die in / cygdrive gemountet ist) in den Root-Ordner kopiert werden.

Der nächste Schritt ist die Verbindung über Mosh:

mosh @ --ssh=\"ssh -i key2014.pem -p 22\" -p 55505 -- tmux a

55505 - UDP-Port, den ich zuvor in den Sicherheitsregeln im aws-Admin-Bereich für eingehende Verbindungen geöffnet habe. Jetzt werden alle Verbindungen nur noch über diesen durchgeführt (zusätzlich zum erstmaligen Aufbau der Kommunikation - es geht über Port 22).
tmux a - Ein Befehl, der ausgeführt wird, wenn eine Verbindung zum Server hergestellt wird (eine Verbindung zu einer laufenden tmux-Sitzung herstellen).
Wir prüfen. Funktioniert es Großartig! Die letzte Aufgabe ist das Erstellen einer neuen Aufgabe in ConEmu.

Bild

Speziell:

C:\cool\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /bin/bash -l -c "mosh @ --ssh=\"ssh -i key2014.pem -p 22\" -p 55505 -- tmux a"

Ich denke alles ist klar. Achten Sie auf die Schrägstriche vor den Anführungszeichen. Sie unterscheiden den Grad der Einschließung von Anführungszeichen.

Nun, vielleicht ist das alles. Wenn Sie nun eine Verbindung zum Server herstellen möchten, starten Sie ConEmu, klicken Sie auf den Pfeil neben dem Pluszeichen und wählen Sie unsere Aufgabe aus.

Zusatz


Eine andere Vereinfachung, die ich benutze, ist, dass ich alle Aufgaben hinzugefügt habe, die ich direkt von Totcmd aufrufen muss:

Bild

Normal cmd:

Bild

Verbindung zu aws:

Bild

PS Ich
schlage vor, dass jeder, der diesen Artikel liest, Vorschläge dazu macht, was in diesem Schema noch enthalten sein kann. Vielen Dank für Ihre Aufmerksamkeit.

PPS
Dieser Artikel ist eine Zusammenstellung anderer Artikel aus verschiedenen Orten und deren eigenen Entwicklungen. Der einzige Artikel, an den ich mich erinnere, ist http://xakep.ru/komfort-shell/

Jetzt auch beliebt: