GNU/Linux >> Linux Esercitazione >  >> Linux

Come inviare dati agli appunti locali da una sessione SSH remota

Sto resuscitando questo thread perché stavo cercando lo stesso tipo di soluzione e ne ho trovato uno che funziona per me. È una piccola modifica a un suggerimento di OSX Daily.

Nel mio caso, utilizzo Terminal sulla mia macchina OSX locale per connettermi a un server Linux tramite SSH. Come l'OP, volevo essere in grado di trasferire piccoli frammenti di testo dal terminale ai miei appunti locali, usando solo la tastiera.

L'essenza della soluzione:

commandThatMakesOutput | ssh desktop pbcopy

Quando viene eseguito in una sessione ssh su un computer remoto, questo comando accetta l'output di commandThatMakesOutput (ad es. ls, pwd) e reindirizza l'output negli appunti del computer locale (il nome o l'IP di "desktop"). In altre parole, utilizza ssh annidato:sei connesso al computer remoto tramite una sessione ssh, esegui lì il comando e il computer remoto si connette al tuo desktop tramite una sessione ssh diversa e inserisce il testo negli appunti.

Richiede che il tuo desktop sia configurato come server ssh (che lascio a te e google). È molto più semplice se hai impostato le chiavi ssh per facilitare l'utilizzo rapido di ssh, preferibilmente utilizzando una passphrase per sessione o qualunque cosa richiedano le tue esigenze di sicurezza.

Altri esempi:

ls  | ssh desktopIpAddress pbcopy
pwd |  ssh desktopIpAddress pbcopy

Per comodità, ho creato un file bash per abbreviare il testo richiesto dopo la pipe:

#!/bin/bash
ssh desktop pbcopy

Nel mio caso, sto usando una chiave con un nome speciale

L'ho salvato con il nome file cb (il mio mnemonico (ClipBoard). Metti lo script da qualche parte nel tuo percorso, rendilo eseguibile e voilà:

ls | cb

Porta del tunnel inverso su server ssh

Tutte le soluzioni esistenti richiedono:

  • X11 sul client (se ce l'hai, xclip sul server funziona alla grande) o
  • il client e il server devono trovarsi nella stessa rete (il che non è il caso se sei al lavoro e cerchi di accedere al tuo computer di casa).

Ecco un altro modo per farlo, anche se dovrai modificare il modo in cui ssh entri nel tuo computer.

Ho iniziato a usarlo e non è neanche lontanamente intimidatorio come sembra, quindi provalo.

Client (avvio sessione ssh)

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

(suggerimento:imposta questa combinazione di tasti in modo da non doverla digitare)

Cliente (un'altra scheda)

nc -l 2000 | pbcopy

Nota:se non hai pbcopy poi solo tee in un file.

Server (all'interno della sessione SSH)

cat some_useful_content.txt | nc localhost 2000

Altre note

In realtà, anche se sei nel bel mezzo di una sessione ssh, c'è un modo per iniziare un tunnel, ma non voglio spaventare le persone da ciò che in realtà non è così male come sembra. Ma aggiungerò i dettagli in seguito se riscontrerò interesse


Ho trovato un'ottima soluzione che non richiede una connessione ssh inversa!

Puoi usare xclip sull'host remoto, insieme a ssh X11 forwarding e XQuartz sul sistema OSX.

Per configurarlo:

  1. Installa XQuartz (l'ho fatto con la ricetta solista + pivotal_workstation::xquartz, ma non è necessario)
  2. Esegui XQuartz.app
  3. Apri le preferenze di XQuartz ( +, )
  4. Assicurati "Abilita sincronizzazione" e "Aggiorna Pasteboard quando cambia CLIPBOARD" sono controllati
  5. ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"

Il mio modo preferito è ssh [remote-machine] "cat log.txt" | xclip -selection c . Questo è molto utile quando non vuoi (o non puoi) ssh da remoto a locale.

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

Modifica:un commento utile da nbren12:

È quasi sempre possibile impostare una connessione ssh inversa utilizzando il port forwarding SSH. Basta aggiungere RemoteForward 127.0.0.1:2222 127.0.0.1:22 alla voce del server nel tuo .ssh/config locale , quindi eseguire ssh -p 2222 127.0.0.1 sul computer remoto, che reindirizzerà quindi la connessione al computer locale. – nbren12


Linux
  1. Comando SCP Linux – Come trasferire file SSH da remoto a locale

  2. Ctrl-c Gestione nella sessione Ssh?

  3. Come impedire che la sessione SSH venga scaduta

  4. Come posso forzare il distacco dello schermo da un'altra sessione SSH?

  5. Come recuperare più file da una macchina remota a una locale con Ansible

Come connettersi a un desktop remoto da Linux

Come SSH in una directory particolare su Linux

Come scaricare file da server Linux remoti

Come eseguire un backup Linux remoto utilizzando SSH

Come utilizzare SSH per connettersi a un server remoto

Procedura:Amministrazione remota di FreeBSD