usuario sesiones sesion servidor comandos comando cerrar activas linux macos unix shell clipboard

linux - sesiones - manual ssh



Cómo enviar datos al portapapeles local desde una sesión remota de SSH (9)

Agregue un puerto de túnel inverso en su servidor

Todas las soluciones existentes necesitan:

  • X11 (si lo tiene, xclip funciona bien) o
  • el cliente y el servidor deben estar en la misma red (que no es el caso si estás en el trabajo tratando de acceder a la computadora de tu casa).

Aquí hay otra forma de hacerlo, aunque tendrá que modificar la forma en que ingresa a su computadora.

Empecé a usar esto y no es tan intimidante como parece, así que pruébalo.

Cliente (inicio de la sesión ssh)

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

(sugerencia: conviértalo en un enlace para que no tengas que escribirlo)

Cliente (otra pestaña)

nc -l 2000 | pbcopy

Nota: si no tiene pbcopy , simplemente pbcopy a un archivo.

Servidor (dentro de la sesión SSH)

cat some_useful_content.txt | nc localhost 2000

Otras notas

Si estás en el medio de una sesión ssh hay una manera de iniciar un túnel, pero agregaré los detalles más adelante si veo algún interés

Pregunta Borderline ServerFault, pero estoy programando algunos guiones de shell, así que estoy intentando aquí primero :)

La mayoría de los * nixes tienen un comando que le permitirá canalizar / redirigir la salida al portapapeles / portapapeles local, y recuperar de la misma. En OS X estos comandos son

pbcopy, pbpaste

¿Hay alguna forma de replicar esta funcionalidad mientras SSHed en otro servidor? Es decir,

  1. Estoy usando la Computadora A.
  2. Abro una ventana de terminal
  3. I SSH a la computadora B
  4. Ejecuto un comando en la computadora B
  5. La salida de la Computadora B se redirige o se copia automáticamente al portapapeles de la Computadora A.

Y sí, sé que podría simplemente (estremecer) usar el mouse para seleccionar el texto del comando, pero me he acostumbrado tanto al flujo de trabajo de extraer la salida directamente al portapapeles que quiero lo mismo para mis sesiones remotas.

El código es útil, pero también se aprecian los enfoques generales.


¡Encontré una gran solución que no requiere una conexión ssh inversa!

Puede usar xclip en el host remoto, junto con ssh X11 forwarding y XQuartz en el sistema OSX.

Para configurar esto:

  1. Instalar XQuartz (lo hice con solista + pivotal_workstation :: xquartz receta , pero no es necesario)
  2. Ejecutar XQuartz.app
  3. Abra XQuartz Preferences ( + , )
  4. Asegúrese de que estén habilitados "Habilitar sincronización" y "Actualizar tarjeta de trabajo cuando cambie CLIPBOARD"
  5. ssh -X remote-host "echo ''hello from remote-host'' | xclip -selection clipboard"

Esta es mi solución basada en el túnel inverso SSH, netcat y xclip.

Primero crea una secuencia de comandos (por ejemplo, clipboard-daemon.sh) en tu estación de trabajo:

#!/bin/bash HOST=127.0.0.1 PORT=3333 NUM=`netstat -tlpn 2>/dev/null | grep -c " ${HOST}:${PORT} "` if [ $NUM -gt 0 ]; then exit fi while [ true ]; do nc -l ${HOST} ${PORT} | xclip -selection clipboard done

y comienza en segundo plano.

./clipboard-daemon.sh&

Comenzará la salida de la tubería nc a xclip y el proceso de reaparición luego de recibir parte de los datos

Luego, inicie la conexión ssh al host remoto:

ssh user@host -R127.0.0.1:3333:127.0.0.1:3333

Mientras está conectado en el cuadro remoto, intente esto:

echo "this is test" >/dev/tcp/127.0.0.1/3333

luego intente pegar en su estación de trabajo

Por supuesto, puede escribir el script del contenedor que inicia clipboard-daemon.sh primero y luego ssh session. Así es como funciona para mí. Disfrutar.


Estoy resucitando este hilo porque he estado buscando el mismo tipo de solución, y he encontrado una que funciona para mí. Es una modificación menor a una sugerencia de OSX Daily .

En mi caso, uso Terminal en mi máquina OSX local para conectarme a un servidor Linux a través de SSH. Al igual que el OP, quería poder transferir pequeños trozos de texto de la terminal a mi portapapeles local, usando solo el teclado.

La esencia de la solución:

commandThatMakesOutput | ssh desktop pbcopy

Cuando se ejecuta en una sesión ssh en una computadora remota, este comando toma la salida de commandThatMakesOutput (por ejemplo, ls, pwd) y canaliza la salida al portapapeles de la computadora local (el nombre o IP de "escritorio"). En otras palabras, usa ssh anidado: estás conectado a la computadora remota a través de una sesión ssh, ejecutas el comando allí, y la computadora remota se conecta a tu escritorio a través de una sesión ssh diferente y coloca el texto en tu portapapeles.

Requiere que su escritorio esté configurado como un servidor ssh (que le dejo a usted y a google). Es mucho más fácil si ha configurado las claves ssh para facilitar el uso rápido de ssh, preferiblemente utilizando una frase de contraseña por sesión, o lo que requiera su seguridad.

Otros ejemplos:

ls | ssh desktopIpAddress pbcopy pwd | ssh desktopIpAddress pbcopy

Para mayor comodidad, he creado un archivo bash para acortar el texto requerido después de la tubería:

#!/bin/bash ssh desktop pbcopy

En mi caso, estoy usando una clave especialmente nombrada

Lo guardé con el nombre de archivo cb (my mnemonic (ClipBoard). Pon el script en algún lugar de tu camino, hazlo ejecutable y listo:

ls | cb


Hay varias herramientas para acceder a las selecciones de X11, incluidos xclip y XSel . Tenga en cuenta que X11 tradicionalmente tiene selecciones múltiples, y la mayoría de los programas tienen cierta comprensión tanto del portapapeles como de la selección primaria (que no son lo mismo). Emacs también puede trabajar con la selección secundaria, pero eso es raro, y nadie sabe realmente qué hacer con los búferes de corte ...

$ xclip -help Usage: xclip [OPTION] [FILE]... Access an X server selection for reading or writing. -i, -in read text into X selection from standard input or files (default) -o, -out prints the selection to standard out (generally for piping to a file or program) -l, -loops number of selection requests to wait for before exiting -d, -display X display to connect to (eg localhost:0") -h, -help usage information -selection selection to access ("primary", "secondary", "clipboard" or "buffer-cut") -noutf8 don''t treat text as utf-8, use old unicode -version version information -silent errors only, run in background (default) -quiet run in foreground, show what''s happening -verbose running commentary Report bugs to <[email protected]>

$ xsel -help Usage: xsel [options] Manipulate the X selection. By default the current selection is output and not modified if both standard input and standard output are terminals (ttys). Otherwise, the current selection is output if standard output is not a terminal (tty), and the selection is set from standard input if standard input is not a terminal (tty). If any input or output options are given then the program behaves only in the requested mode. If both input and output is required then the previous selection is output before being replaced by the contents of standard input. Input options -a, --append Append standard input to the selection -f, --follow Append to selection as standard input grows -i, --input Read standard input into the selection Output options -o, --output Write the selection to standard output Action options -c, --clear Clear the selection -d, --delete Request that the selection be cleared and that the application owning it delete its contents Selection options -p, --primary Operate on the PRIMARY selection (default) -s, --secondary Operate on the SECONDARY selection -b, --clipboard Operate on the CLIPBOARD selection -k, --keep Do not modify the selections, but make the PRIMARY and SECONDARY selections persist even after the programs they were selected in exit. -x, --exchange Exchange the PRIMARY and SECONDARY selections X options --display displayname Specify the connection to the X server -t ms, --selectionTimeout ms Specify the timeout in milliseconds within which the selection must be retrieved. A value of 0 (zero) specifies no timeout (default) Miscellaneous options -l, --logfile Specify file to log errors to when detached. -n, --nodetach Do not detach from the controlling terminal. Without this option, xsel will fork to become a background process in input, exchange and keep modes. -h, --help Display this help and exit -v, --verbose Print informative messages --version Output version information and exit Please report bugs to <[email protected]>.

En resumen, debe probar xclip -i / xclip -o o xclip -i -sel clip / xclip -o -sel clip o xsel -i / xsel -o o xsel -i -b / xsel -o -b , dependiendo de Lo que quieras.



Mi forma favorita es ssh [remote-machine] "cat log.txt" | xclip -selection c ssh [remote-machine] "cat log.txt" | xclip -selection c . Esto es más útil cuando no quiere (o no puede) ssh de remoto a local.

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

Editar: un útil comentario de nbren12:

Casi siempre es posible configurar una conexión ssh inversa utilizando el reenvío de puertos SSH. Simplemente agregue RemoteForward 127.0.0.1:2222 127.0.0.1:22 a la entrada del servidor en su .ssh/config local, y luego ejecute ssh -p 2222 127.0.0.1 en la máquina remota, que luego redirigirá la conexión a la máquina local . - nbren12


No es un trazador de líneas único, pero no requiere ssh adicional .

  • instalar netcat si es necesario
  • use termbin : cat ~/some_file.txt | nc termbin.com 9999 cat ~/some_file.txt | nc termbin.com 9999 . Esto copiará la salida al termbin web de termbin e imprimirá la URL a su salida.
  • visita esa url desde tu computadora, obtienes tu salida

Por supuesto, no lo use para contenido sensible.


Si Tooltalk está disponible para ambos sistemas, puede escribir una aplicación Tooltalk simple para hacer lo que desea hacer.