Wie benutzt man auf einem Linux-Server mehrere Terminals über eine einzige SSH-Verbindung?

15

Ich stelle oft fest, dass ich mehrere ssh-Verbindungen öffne, um mehrere Protokolldateien gleichzeitig mit anzuzeigen tail -f.

Dies ist kein Problem, wenn ich zu Hause bin, da ich die Verschlüsselung mit öffentlichen Schlüsseln für die Anmeldung ohne Kennwort verwende. Allerdings benutze ich häufig Computer an meiner Universität, um dies zu tun, sodass ich nicht die Möglichkeit habe, meinen privaten Schlüssel zu verwenden. Es wird ärgerlich, mein Passwort 4 oder 5 Mal einzugeben, um mehrere Terminalfenster zu erhalten.

Wie kann ich mehrere Terminals über eine einzige Verbindung erreichen?

epochwolf
quelle

Antworten:

38

Verwenden Sie einfach den GNU-Bildschirm . Es ist großartig, wenn Sie Remote-Sitzungen starten und wiederherstellen können, wenn Ihre Verbindung unterbrochen wird. Es ist als Paket für die meisten Distributionen verfügbar und möglicherweise bereits auf Ihrem Universitätssystem installiert.

Das Handbuch gibt Ihnen alles, was Sie brauchen, um loszulegen Ctrl+A. Standardmäßig sind alle Befehle mit vorangestellt . Um zum Beispiel die Online-Hilfe aufzurufen, drücken Sie einfach und Ctrl+Adann?

saschabeaumont
quelle
Ich bin seit mehreren Jahren ein Linux-Administrator und benutze den Bildschirm viele, viele Male am Tag.
Kein Server ist ohne Bildschirm vollständig.
Gert M
2
Nachdem ich den Bildschirm die letzten Stunden benutzt habe, kann ich nicht glauben, dass ich ohne ihn gelebt habe! Ich habe 5 Jahre damit verbracht, es falsch zu machen.
epochwolf
11

Auf dem Bildschirm können Sie über mehrere Terminals und mehr verfügen (z. B. die Möglichkeit, Ihre Sitzung zu trennen und eine neue Verbindung herzustellen).

Einige Notizen, um Sie zum Laufen zu bringen:

Ctrl-a c   create
Ctrl-a d   detach
screen -r  reattach
Ctrl-a a   toggle
Ctrl-a "   list

Und einige empfohlene Lektüre:

Philip Durbin
quelle
4

Sehen Sie sich die folgenden zwei Artikel zur gemeinsamen Nutzung von SSH-Verbindungen an:

http://fermiparadox.wordpress.com/2008/06/19/ssh-connection-sharing/
http://protempore.net/~calvins/howto/ssh-connection-sharing/

Wenn Sie eine Google-Suche für die gemeinsame Nutzung von SSH-Verbindungen durchführen, finden Sie eine Reihe weiterer Artikel dazu.

Evan
quelle
1
Interessant. Das einzige Problem ist, dass ich keine Verbindung mehr herstellen kann, wenn meine Internetverbindung unterbrochen wird, ohne den Socket zu löschen. Wenn ich keine Verbindung herstellen kann, wie komme ich zum Server, um den Socket zu löschen?
epochwolf
Sie müssen den Socket auf dem Server nicht löschen, es handelt sich nur um eine clientseitige Freigabe. Sie führen also "ssh foo" einmal aus und es wird der Socket auf demselben Computer erstellt, auf dem Sie den Befehl "ssh foo" ausgeführt haben. Auf dem Server werden mehrere Anmeldungen auf separaten TTYs angezeigt, sodass sich keine von "normalen" separaten Anmeldungen unterscheidet.
David Gardner
3

Möglicherweise können Sie die X-Weiterleitung verwenden, um mehrere entfernte xterms auf Ihrem lokalen Desktop zu öffnen.

John Fouhy
quelle
Auf dem Server ist X11 nicht installiert. Auf einem Windows-System, auf dem ich keinen X-Server installieren kann, ist dies ebenfalls nicht möglich.
epochwolf
Der Linux-Server muss nicht über X11 verfügen, um grafische Anwendungen auszuführen, die auf Ihrem lokalen Desktop angezeigt werden. Der Cygwin X-Server eignet sich auch hervorragend zum Ausführen von Firefox auf meiner Linux-Basis-Box (ohne dass X auf meiner Basis-Box ausgeführt wird), und sie werden auf meinem lokalen Windows-Laptop einwandfrei angezeigt.
Shapr
2

Sie geben keinen zwingenden Grund an, warum Sie keine privaten Schlüssel von den anderen Systemen verwenden können. Generieren Sie sie pro Computer und fügen Sie authorised_hosts die entsprechenden Schlüssel hinzu

Verwenden Sie trotzdem den Bildschirm.

ironfroggy
quelle
Ist die Verwendung eines privaten Schlüssels auf einem öffentlichen Computer eine gute Idee? Besonders wenn ich bedenke, dass ich kein Passwort auf den Schlüssel geschrieben habe?
epochwolf
1
Sie würden nicht denselben Schlüssel verwenden wie an anderer Stelle - Sie würden einen neuen Schlüssel (mit einer Passphrase) generieren und dessen öffentlichen Schlüssel zur Datei "authorized_keys" auf Ihrem Server hinzufügen. Nennen Sie es so etwas wie "portablekey" und entfernen Sie es aus "authorized_keys", wenn Sie glauben, dass es möglicherweise kompromittiert wurde.
Neall
2

Vielleicht möchten Sie sich auch byobu ansehen . Es ist eine erweiterte Version von Screen und ich glaube, es ist ein Ubuntu-Projekt. Aber es kommt standardmäßig mit Ubuntu 9.10 und neuer.

Ich benutze Screen zwar aus Gewohnheit immer noch, wollte aber diese neuere Alternative erwähnen.

3deinfluss
quelle
1

Wenn Sie es nur für das Tailing mehrerer Dateien verwenden, sind Sie möglicherweise auch an Multitail interessiert .

Evan
quelle
Interessanter Link. Ich habe gerade meine häufigste Verwendung erwähnt. Ich muss auch zwischen vim und bash wechseln, um nach Wegen für Dinge zu suchen.
epochwolf
1

Eine nicht erwähnte Bildschirmfunktion besteht darin, den Bildschirm zu "trennen" und alle in diesem Satz von Bildschirmen ausgeführten Befehle auszuführen. Sobald der Bildschirm getrennt ist, können Sie sich abmelden, und auch nach dem Abmelden tuckert alles weg. Ich starte den Bildschirm und führe dann mehrere c-Befehle aus, um neue Unterbildschirme zu erstellen. Ich kann zwischen ihnen wechseln und einige lange laufende Kompilierungs- oder Datenverarbeitungsvorgänge starten. Dabei kann ich mir sicher sein, dass meine beschissene VPN-Verbindung nicht mehr funktioniert.

Nachdem Sie sich abgemeldet haben, können Sie sich erneut anmelden und 'screen -R' verwenden, wodurch Sie erneut an Ihre vorhandenen Bildschirm-Sessoins angefügt werden.

Paul Leclerc
quelle
0

Zur Verwendung screenmit sshTyp

ssh -t <user>@<server> screen -r

( Quelle ). Mann ssh:

-t Pseudo-Terminal-Zuweisung erzwingen. Hiermit können beliebige bildschirmbasierte Programme auf einem entfernten Rechner ausgeführt werden, was zB bei der Implementierung von Menüdiensten sehr hilfreich sein kann. Mehrere -t-Optionen erzwingen die Zuweisung von tty, auch wenn ssh kein lokales tty hat.

Jaroslaw Nikitenko
quelle