Obnovuji toto vlákno, protože jsem hledal stejné řešení a našel jsem jedno, které mi vyhovuje. Je to malá úprava návrhu od OSX Daily.
V mém případě používám terminál na svém místním počítači OSX k připojení k linuxovému serveru přes SSH. Stejně jako OP jsem chtěl mít možnost přenášet malé kousky textu z terminálu do mé místní schránky pouze pomocí klávesnice.
Podstata řešení:
commandThatMakesOutput | ssh desktop pbcopy
Při spuštění v relaci ssh na vzdáleném počítači tento příkaz převezme výstup commandThatMakesOutput (např. ls, pwd) a přesměruje výstup do schránky místního počítače (název nebo IP „desktop“). Jinými slovy, používá vnořené ssh:jste připojeni ke vzdálenému počítači prostřednictvím jedné relace ssh, tam provedete příkaz a vzdálený počítač se připojí k vaší ploše prostřednictvím jiné relace ssh a vloží text do vaší schránky.
Vyžaduje to, aby byl váš desktop nakonfigurován jako ssh server (což nechám na vás a googlu). Je to mnohem snazší, pokud jste nastavili klíče ssh pro usnadnění rychlého použití ssh, nejlépe pomocí přístupové fráze pro relaci nebo podle toho, co vaše potřeby zabezpečení vyžadují.
Další příklady:
ls | ssh desktopIpAddress pbcopy
pwd | ssh desktopIpAddress pbcopy
Pro usnadnění jsem vytvořil bash soubor, který zkrátí požadovaný text za rourou:
#!/bin/bash
ssh desktop pbcopy
V mém případě používám speciálně pojmenovaný klíč
Uložil jsem jej pod názvem souboru cb (moje mnemotechnická pomůcka (schránka). Vložte skript někam do cesty, udělejte jej spustitelný a voila:
ls | cb
Port obráceného tunelu na ssh serveru
Všechna stávající řešení buď potřebují:
- X11 na klientovi (pokud jej máte,
xclip
na serveru funguje skvěle) nebo - klient a server musí být ve stejné síti (což neplatí, pokud se v práci pokoušíte o přístup k domácímu počítači).
Zde je další způsob, jak to udělat, i když budete muset upravit způsob, jakým ssh vstupujete do svého počítače.
Začal jsem to používat a není to zdaleka tak děsivé, jak to vypadá, takže to zkuste.
Klient (spuštění relace ssh)
ssh [email protected] -R 2000:localhost:2000
(nápověda:udělejte z toho klávesovou zkratku, abyste ji nemuseli psát)
Klient (další karta)
nc -l 2000 | pbcopy
Poznámka:pokud nemáte pbcopy
pak stačí tee
do souboru.
Server (uvnitř relace SSH)
cat some_useful_content.txt | nc localhost 2000
Další poznámky
Ve skutečnosti, i když jste uprostřed sezení ssh, existuje způsob, jak zahájit tunel, ale nechci lidi strašit od toho, co ve skutečnosti není tak špatné, jak to vypadá. Podrobnosti ale doplním později, pokud uvidím zájem
Našli jsme skvělé řešení, které nevyžaduje reverzní připojení ssh!
Na vzdáleném hostiteli můžete použít xclip spolu s přesměrováním ssh X11 a XQuartz v systému OSX.
Postup nastavení:
- Nainstalujte XQuartz (udělal jsem to s receptem Soloist + pivotal_workstation::xquartz, ale nemusíte)
- Spusťte XQuartz.app
- Otevřete předvolby XQuartz ( +
,
) - Ujistěte se, že „Povolit synchronizaci“ a „Aktualizovat pracovní plochu, když se změní SCHRÁNKA“ jsou kontrolovány
ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"
Můj oblíbený způsob je ssh [remote-machine] "cat log.txt" | xclip -selection c
. To je nejužitečnější, když nechcete (nebo nemůžete) ssh ze vzdáleného na místní.
Edit:na Cygwin ssh [remote-machine] "cat log.txt" > /dev/clipboard
.
Edit:Užitečný komentář od nbren12:
Téměř vždy je možné nastavit zpětné připojení ssh pomocí přesměrování portů SSH. Stačí přidat
RemoteForward 127.0.0.1:2222 127.0.0.1:22
na záznam serveru ve vašem místním.ssh/config
a poté spusťtessh -p 2222 127.0.0.1
na vzdáleném počítači, který pak přesměruje připojení na místní počítač. – nbren12