Oto mój przypadek użycia:
- Często jestem podłączony do innych komputerów za pośrednictwem SSH do pracy i często muszę kopiować i wklejać dokumenty / tekst z serwera do lokalnie działających edytorów do pisania przykładów i udostępniania tekstu.
- Często, jeśli tekst jest wystarczająco mały, po prostu skopiuję dane wyjściowe z mojego programu terminalowego (w tej chwili gnome-terminal) i wkleję go.
- Jednak jeśli chodzi o całe dokumenty, moje opcje są dość ograniczone. Mogę skopiować dokument fragment po kawałku lub
scp
na komputer lokalny.
Czy istnieje sposób na użycie takiego programu, xclip
który pozwoli mi skopiować zdalnie stdin
do schowka lokalnego serwera X? Coś w efekcie:
cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard
byłoby wspaniale. Czy istnieje coś, co umożliwia to?
Nie potrzebujesz niczego specjalnego; skoro
xclip
działastdin
, po prostuDlaczego trzeba go modyfikować
sed
?ssh
jest przezroczysty dla danych, gdy nie jest używany jako terminal, i jest powszechnie stosowany w rurociągach takich jakźródło
stdin
przed skopiowaniem go do schowka, chciałbym tę opcję.ssh
sesji (nie byłoby to zbyt bezpieczne, gdybyś mógł). Możesz skonfigurowaćssh
ControlMaster
rzeczy do multipleksowania dodatkowych połączeń na istniejącym, ale tak naprawdę nie jest to coś dla początkujących i nadal robisz to w ten sam sposób później, przełączając się na inny lokalny terminal i uruchamiając powyższą komendę (która nie otwiera nowego okno terminala).Oto, jak zrobiłbyś to w OSX z lokalnego komputera
źródło
jeśli twój komputer lokalny ma system Windows (7+), możesz po prostu użyć tego z CommandLine:
źródło
~ / .ssh / config:
/ etc / ssh / sshd_config:
grzmotnąć:
źródło
Bardzo podobne do rozwiązań @ d-raev i @ william-casarin, jednak jest inaczej, więc dzielę się tym, co dla mnie zadziałało.
Komenda
Wyjaśnienie
Ten wykorzystuje
ssh
do stworzenia bezpiecznego tunelu, zaloguj się douser
@host
lubip
, a następnie wykonaćcat
aby wydrukować zawartość<myconffile.conf
abystdout
następnie potokiem że do poleceniaxclip -sel clip
na lokalnym komputerze, co plasuje zawartość<myconffile.conf
do schowka na komputerze lokalnym.Przykład użycia w świecie rzeczywistym
Używam tej struktury poleceń do zadań takich jak wklejanie kluczy ssh do github (pozwalając na proste wybranie Ctrl-V lub wklejanie zaznaczenia po uruchomieniu polecenia) w Bash na Ubuntu 16.04 i 18.04. Sprawdź
man ssh
,man cat
orazman xclip
dla zachowania i opcji szczegółów.źródło
xclip
nie będzie działać, ponieważ nie ma X.Mam podobny problem z
lxterminal
wklejaniem schowka LUbuntu (testowałem różne terminale) dossh
sesji. Jeśli schowek ma więcej niż około 100 bajtów, limit czasu sesji się kończy i kończy się niepowodzeniem.Jeśli połączę się przez ssh z prawie dowolnym serwerem CentOS 5.x, a następnie połączę się z serwerem docelowym, wklejanie ze schowka działa bez problemu dla dowolnego rozsądnego rozmiaru danych.
źródło
Kopiowanie z serwera bezgłowego do lokalnego schowka, z wnętrza zwykłej sesji SSH:
Zainstaluj
ncat
na komputerze lokalnym i zdalnym. (Na twoim zdalnym komputerze możesz także zrobić znc
lub zwykłymtelnet
, ale na komputerze lokalnym potrzebujemy opcji do wykonywania poleceń (-c
/-e
), które nie są dostępnenc
w zwykłych dystrybucjach, takich jak Debian i Ubuntu.)Na komputerze lokalnym skonfiguruj serwer nasłuchujący na interfejsie lokalnym, który skopiuje zawartość przychodzącą przez port 10009 do schowka X:
Lub użyj równoważnej wersji skróconej:
SSH do zdalnego komputera w taki sposób, że tunel zwrotny jest ustanawiany od portu 10008 zdalnego komputera do portu 10009 na lokalnym komputerze (gdzie nasłuchuje serwer). Możesz użyć tej sesji SSH do normalnej pracy.
Jeśli chcesz skopiować zawartość pliku ze zdalnego komputera do lokalnego schowka, uruchom w powłoce SSH:
I oczywiście jest to ładniejsze, gdy jest pakowane jako skrót powłoki lub skrypt. Możemy to nazwać
rclip
„zdalnym schowkiem” w sposób analogiczny do znanegoxclip
.Zalety
Nie ma potrzeby otwierania kolejnej sesji SSH na zdalnym komputerze.
Nie ma potrzeby
xclip
korzystania ze zdalnego komputera, więc działa, jeśli nie możesz go zainstalować lub nie możesz go używać, ponieważ jest to serwer bezgłowy bez X.Bezpieczeństwo
Robimy to
ncat -l localhost 10009
dla serwera, co oznacza, że nasłuchuje tylko na interfejsie sieciowym zlocalhost
adresem IP. Ten lokalny interfejs pętli zezwala tylko na połączenia z własnego komputera (w tym, w tym przypadku, z tunelowaniem zwrotnym przez SSH). Więc nawet jeśli nie jesteś za firewallem, twój port 10009 nie jest narażony na nikogo w Internecie.Źródło
Zaadaptowano z gist dergachev / ssh-forward-clipboard.md do pracy w systemie Linux. Ta lista zawiera również instrukcje, jak ustawić domyślny tunel zwrotny SSH.
źródło
https://secure.wikimedia.org/wikipedia/en/wiki/Base64
Możesz przekonwertować dane ze schowka przy pomocy Base64 na tekst ASCII. Następnie możesz przepchnąć to przez już istniejące połączenie SSH.
źródło