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:
- Instalar XQuartz (Hice esto con soloist + pivotal_workstation::xquartz receta, pero no es necesario)
- Ejecutar XQuartz.app
- Abra las preferencias de XQuartz ( +
,
) - Asegúrese de "Habilitar sincronización" y "Actualizar Pasteboard cuando cambie el CLIPBOARD" se comprueban
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