GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo enviar datos al portapapeles local desde una sesión SSH remota

Estoy resucitando este hilo porque he estado buscando el mismo tipo de solución y encontré 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 fragmentos de texto desde 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, utiliza ssh anidado:está conectado a la computadora remota a través de una sesión ssh, ejecuta el comando allí y la computadora remota se conecta a su escritorio a través de una sesión ssh diferente y coloca el texto en su portapapeles.

Requiere que su escritorio esté configurado como un servidor ssh (que se lo dejo a usted y a Google). Es mucho más fácil si ha configurado claves ssh para facilitar el uso rápido de ssh, preferiblemente usando una frase de contraseña por sesión, o lo que requieran sus necesidades de 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 canalización:

#!/bin/bash
ssh desktop pbcopy

En mi caso, estoy usando una clave con un nombre especial

Lo guardé con el nombre de archivo cb (mi mnemónico (Portapapeles). Coloque el script en algún lugar de su camino, hágalo ejecutable y listo:

ls | cb

Puerto de túnel inverso en el servidor ssh

Todas las soluciones existentes necesitan:

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

Aquí hay otra forma de hacerlo, aunque deberá 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 sesión ssh)

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

(pista:haga de esto una combinación de teclas para que no tenga que escribirlo)

Cliente (otra pestaña)

nc -l 2000 | pbcopy

Nota:si no tienes pbcopy entonces solo tee en un archivo.

Servidor (dentro de la sesión SSH)

cat some_useful_content.txt | nc localhost 2000

Otras notas

En realidad, incluso si estás en medio de una sesión ssh, hay una manera de iniciar un túnel, pero no quiero asustar a la gente de lo que realmente no es tan malo como parece. Pero agregaré los detalles más tarde si veo algún interés


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

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

Para configurar esto:

  1. Instalar XQuartz (Hice esto con soloist + pivotal_workstation::xquartz receta, pero no es necesario)
  2. Ejecutar XQuartz.app
  3. Abra las preferencias de XQuartz ( +, )
  4. Asegúrese de "Habilitar sincronización" y "Actualizar Pasteboard cuando cambie el CLIPBOARD" se comprueban
  5. ssh -X remote-host "echo 'hello from remote-host' | xclip -selection clipboard"

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

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

Editar:un comentario útil de nbren12:

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


Linux
  1. Cómo usar SSH en Linux desde Android

  2. ¿Cómo copiar un archivo desde un servidor remoto a una máquina local?

  3. Ctrl-c Manejo en sesión Ssh?

  4. Cómo evitar que se agote el tiempo de espera de la sesión SSH

  5. ¿Cómo puedo copiar la salida de un comando remoto en el portapapeles local?

Cómo conectarse a un escritorio remoto desde Linux

Cómo SSH en un directorio particular en Linux

Cómo descargar archivos desde servidores Linux remotos

Cómo realizar una copia de seguridad remota de Linux mediante SSH

Cómo usar SSH para conectarse a un servidor remoto

Cómo:Administración remota de FreeBSD