Hier ist mein Anwendungsfall:
- Ich bin häufig über SSH mit anderen Computern verbunden und muss häufig Dokumente / Text vom Server in lokal ausgeführte Editoren kopieren und einfügen, um Beispiele zu schreiben und Text gemeinsam zu nutzen.
- Wenn der Text klein genug ist, kopiere ich oft einfach die Ausgabe aus meinem Terminalprogramm (im Moment gnome-terminal) und füge sie ein.
- Wenn es sich jedoch um vollständige Dokumente handelt, sind meine Optionen sehr begrenzt. Ich kann das Dokument entweder Stück für Stück oder
scp
auf den lokalen Computer kopieren .
Gibt es eine Möglichkeit, ein Programm zu verwenden, mit xclip
dem ich Remote stdin
in die Zwischenablage des lokalen X-Servers kopieren kann ? Etwas zur Wirkung von:
cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard
wäre großartig. Gibt es etwas, das dies ermöglicht?
Sie brauchen nichts Besonderes; da
xclip
klappt dasstdin
einfachWarum müsste es mit geändert werden
sed
?ssh
ist für Daten transparent, wenn sie nicht als Terminal verwendet werden, und wird üblicherweise in Pipelines wie zquelle
stdin
vor dem Kopieren in die Zwischenablage eine Verarbeitung durchführen möchte, würde ich diese Option mögen.ssh
Sitzung einzufügen (es wäre nicht sehr sicher, wenn Sie könnten). Sie können die einrichtenssh
ControlMaster
Sachen Multiplex zusätzliche Verbindungen über einer bestehenden, aber es ist nicht wirklich etwas für Anfänger und Sie noch tun es die gleiche Art und Weise danach, durch zu einem anderen lokalen Endvermittlungseinrichtung und Ausführen des Befehls oben (was nicht nicht eine neue öffnen Terminalfenster).So würden Sie es unter OSX von Ihrem lokalen Computer aus tun
quelle
Wenn auf Ihrem lokalen Computer Windows (7+) ausgeführt wird, können Sie dies einfach über die Befehlszeile verwenden:
quelle
~ / .ssh / config:
/ etc / ssh / sshd_config:
bash:
quelle
Sehr ähnlich zu den Lösungen von @ d-raev und @ william-casarin, aber es ist anders, also teile ich, was für mich funktioniert hat.
Der Befehl
Erläuterung
Dies wird verwendet
ssh
, um einen sicheren Tunnel zu erstellen, sich beiuser
@ anzumeldenhost
oder umip
danncat
den Inhalt von zu drucken<myconffile.conf
und diesenstdout
dann an den Befehlxclip -sel clip
auf Ihrem lokalen Computer weiterzuleiten, der den Inhalt von<myconffile.conf
in die Zwischenablage auf Ihrem lokalen Computer legt .Beispielanwendung in der Praxis
Ich verwende diese Befehlsstruktur für Aufgaben wie das Einfügen von SSH-Schlüsseln in Github (wobei eine einfache Strg-V- oder Paste-Auswahl nach dem Ausführen des Befehls möglich ist) mit Bash unter Ubuntu 16.04 und 18.04. Informationen zu Verhalten und Optionen finden Sie unter
man ssh
,man cat
undman xclip
.quelle
xclip
kein X ausgeführt werden kann.Ich habe ein ähnliches Problem damit, dass LUbuntu
lxterminal
(verschiedene Terminals getestet) die Zwischenablage in einessh
Sitzung einfügt . Wenn die Zwischenablage mehr als 100 Bytes hat, wird die Sitzung unterbrochen und schlägt fehl.Wenn ich über ssh eine Verbindung zu fast jedem CentOS 5.x-Server herstelle und dann eine Verbindung zum Zielserver herstelle, funktioniert das Einfügen in die Zwischenablage bei einer angemessenen Datengröße problemlos.
quelle
Kopieren von einem Headless-Server in die lokale Zwischenablage innerhalb Ihrer üblichen SSH-Sitzung:
Installieren Sie
ncat
auf Ihrem lokalen und Remote-Computer. (Auf Ihrem entfernten Rechner können Sie auch mitnc
oder plain arbeitentelnet
, aber auf dem lokalen Rechner benötigen wir die Optionen zum Ausführen von Befehlen (-c
/-e
), dienc
in üblichen Distributionen wie Debian und Ubuntu nicht verfügbar sind .)Richten Sie auf Ihrem lokalen Computer einen Server ein, der die lokale Schnittstelle überwacht und den an Port 10009 eingehenden Inhalt in Ihre X-Zwischenablage kopiert:
Oder verwenden Sie die entsprechende Kurzfassung:
Stellen Sie eine SSH-Verbindung zum Remotecomputer her, sodass ein umgekehrter Tunnel von Port 10008 des Remotecomputers zu Port 10009 auf Ihrem lokalen Computer (auf dem Ihr Server empfangsbereit ist) hergestellt wird. Sie können diese SSH-Sitzung für Ihre normale Arbeit verwenden.
Wenn Sie den Inhalt einer Datei vom Remote-Computer in die lokale Zwischenablage kopieren möchten, führen Sie Folgendes in der SSH-Shell aus:
Und das ist natürlich schöner, wenn es als Shell-Verknüpfung oder als Skript gepackt wird. Wir könnten es
rclip
für "[Kopie in] entfernte Zwischenablage" in Analogie zu den bekannten nennenxclip
.Vorteile
Es ist nicht erforderlich, eine weitere SSH-Sitzung für den Remotecomputer zu öffnen.
Auf
xclip
dem Remotecomputer ist dies nicht erforderlich , daher funktioniert es, wenn Sie es nicht installieren oder verwenden können, da es sich um einen Headless-Server ohne X handelt.Sicherheit
Wir tun dies
ncat -l localhost 10009
für den Server, was bedeutet, dass er nur auf der Netzwerkschnittstelle mit derlocalhost
IP-Adresse lauscht . Diese Local Loop-Schnittstelle ermöglicht nur Verbindungen von Ihrem eigenen Computer (in diesem Fall auch Verbindungen, die über SSH rückwärts getunnelt werden). Selbst wenn Sie sich nicht hinter einer Firewall befinden, ist Ihr Port 10009 niemandem im Internet ausgesetzt.Quelle
Angepasst von der Liste dergachev / ssh-forward-clipboard.md für Linux. Diese Übersicht enthält auch Anweisungen, wie der SSH-Reverse-Tunnel zum Standard gemacht wird.
quelle
https://secure.wikimedia.org/wikipedia/en/wiki/Base64
Sie können Ihre Zwischenablagedaten mit Base64 in ASCII-Text konvertieren. Dann können Sie dies innerhalb einer bereits bestehenden SSH-Verbindung durchschieben.
quelle