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:
- Installieren Sie XQuartz (ich habe dies mit dem Rezept soloist + pivotal_workstation::xquartz gemacht, aber Sie müssen es nicht)
- Führen Sie XQuartz.app aus
- XQuartz-Einstellungen öffnen ( +
,
) - Stellen Sie sicher, dass "Synchronisierung aktivieren" und "Pasteboard aktualisieren, wenn CLIPBOARD sich ändert" werden überprüft
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