GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So senden Sie Daten von einer Remote-SSH-Sitzung an die lokale Zwischenablage

Ich hole diesen Thread wieder hoch, weil ich nach der gleichen Art von Lösung gesucht habe und eine gefunden habe, die für mich funktioniert. Es ist eine geringfügige Änderung eines Vorschlags von OSX Daily.

In meinem Fall verwende ich Terminal auf meinem lokalen OSX-Rechner, um über SSH eine Verbindung zu einem Linux-Server herzustellen. Wie das OP wollte ich in der Lage sein, kleine Textstücke vom Terminal in meine lokale Zwischenablage zu übertragen, indem ich nur die Tastatur verwende.

Die Essenz der Lösung:

commandThatMakesOutput | ssh desktop pbcopy

Wenn dieser Befehl in einer SSH-Sitzung zu einem Remote-Computer ausgeführt wird, übernimmt er die Ausgabe von commandThatMakesOutput (z. B. ls, pwd) und leitet die Ausgabe in die Zwischenablage des lokalen Computers (der Name oder die IP von "desktop"). Mit anderen Worten, es verwendet verschachteltes SSH:Sie sind über eine SSH-Sitzung mit dem Remote-Computer verbunden, Sie führen den Befehl dort aus, und der Remote-Computer verbindet sich über eine andere SSH-Sitzung mit Ihrem Desktop und legt den Text in Ihre Zwischenablage ab /P>

Es erfordert, dass Ihr Desktop als SSH-Server konfiguriert ist (was ich Ihnen und Google überlasse). Es ist viel einfacher, wenn Sie ssh-Schlüssel eingerichtet haben, um eine schnelle ssh-Nutzung zu ermöglichen, vorzugsweise mit einer Passphrase pro Sitzung oder was auch immer Ihre Sicherheitsanforderungen erfordern.

Weitere Beispiele:

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

Der Einfachheit halber habe ich eine Bash-Datei erstellt, um den erforderlichen Text nach der Pipe zu kürzen:

#!/bin/bash
ssh desktop pbcopy

In meinem Fall verwende ich einen speziell benannten Schlüssel

Ich habe es unter dem Dateinamen cb gespeichert (meine Mnemonik (Zwischenablage). Legen Sie das Skript irgendwo in Ihren Pfad, machen Sie es ausführbar und voila:

ls | cb

Tunnelport auf SSH-Server umkehren

Alle bestehenden Lösungen benötigen entweder:

  • X11 auf dem Client (falls vorhanden, xclip auf dem Server funktioniert super) oder
  • Client und Server müssen sich im selben Netzwerk befinden (was nicht der Fall ist, wenn Sie bei der Arbeit versuchen, auf Ihren Heimcomputer zuzugreifen).

Hier ist eine andere Möglichkeit, aber Sie müssen ändern, wie Sie per SSH auf Ihren Computer zugreifen.

Ich habe angefangen, dies zu verwenden, und es ist bei weitem nicht so einschüchternd, wie es aussieht, also probieren Sie es aus.

Client (Start der SSH-Sitzung)

ssh [email protected] -R 2000:localhost:2000

(Hinweis:Machen Sie daraus eine Tastenkombination, damit Sie sie nicht eingeben müssen)

Kunde (weitere Registerkarte)

nc -l 2000 | pbcopy

Hinweis:Wenn Sie pbcopy nicht haben dann einfach tee es in eine Datei.

Server (innerhalb der SSH-Sitzung)

cat some_useful_content.txt | nc localhost 2000

Sonstige Anmerkungen

Selbst wenn Sie sich mitten in einer SSH-Sitzung befinden, gibt es eine Möglichkeit, einen Tunnel zu starten, aber ich möchte die Leute nicht davon abschrecken, was wirklich nicht so schlimm ist, wie es aussieht. Aber ich werde die Details später hinzufügen, wenn ich Interesse sehe


Ich habe eine großartige Lösung gefunden, die keine Reverse-SSH-Verbindung erfordert!

Sie können xclip auf dem Remote-Host zusammen mit ssh X11-Weiterleitung und XQuartz auf dem OSX-System verwenden.

So richten Sie dies ein:

  1. Installieren Sie XQuartz (ich habe dies mit dem Rezept soloist + pivotal_workstation::xquartz gemacht, aber Sie müssen es nicht)
  2. Führen Sie XQuartz.app aus
  3. XQuartz-Einstellungen öffnen ( +, )
  4. Stellen Sie sicher, dass "Synchronisierung aktivieren" und "Pasteboard aktualisieren, wenn CLIPBOARD sich ändert" werden überprüft
  5. ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"

Mein Lieblingsweg ist ssh [remote-machine] "cat log.txt" | xclip -selection c . Dies ist am nützlichsten, wenn Sie keine SSH-Verbindung von remote zu lokal ausführen möchten (oder können).

Bearbeiten:auf Cygwin ssh [remote-machine] "cat log.txt" > /dev/clipboard .

Edit:Ein hilfreicher Kommentar von nbren12:

Es ist fast immer möglich, eine umgekehrte SSH-Verbindung mithilfe der SSH-Portweiterleitung einzurichten. Fügen Sie einfach RemoteForward 127.0.0.1:2222 127.0.0.1:22 hinzu zum Eintrag des Servers in Ihrem lokalen .ssh/config , und führen Sie dann ssh -p 2222 127.0.0.1 aus auf dem Remote-Rechner, der dann die Verbindung zum lokalen Rechner umleitet. – nbren12


Linux
  1. Wie kopiert man eine Datei von einem Remote-Server auf einen lokalen Computer?

  2. Wie erzwinge ich das Trennen von Screen von einer anderen SSH-Sitzung?

  3. Wie kann ich zurück zum lokalen scp, wenn ich bereits auf den Remote-Computer geshshed habe?

  4. Wie kann ich mich von einer offenen Remote-SSH-Sitzung abmelden?

  5. So holen Sie mit Ansible mehrere Dateien vom Remote-Computer auf den lokalen Computer

So stellen Sie von Linux aus eine Verbindung zu einem Remote-Desktop her

So führen Sie SSH in ein bestimmtes Verzeichnis unter Linux aus

So laden Sie Dateien von Remote-Linux-Servern herunter

So führen Sie eine Remote-Linux-Sicherung mit SSH durch

So verwenden Sie SSH, um eine Verbindung zu einem Remote-Server herzustellen

Gewusst wie:FreeBSD-Fernverwaltung