Aquí está mi caso de uso:
- A menudo estoy conectado a otras computadoras a través de SSH por trabajo y a menudo necesito copiar y pegar documentos / texto desde el servidor a editores que se ejecutan localmente para escribir ejemplos y compartir texto.
- A menudo, si el texto es lo suficientemente pequeño, simplemente copiaré el resultado de mi programa de terminal (gnome-terminal en este momento) y lo pegaré.
- Sin embargo, cuando se trata de documentos completos, mis opciones son bastante limitadas. Puedo copiar el documento trozo por trozo o
scp
en la máquina local.
¿Hay alguna manera de usar un programa como el xclip
que me permitirá copiar de forma remota stdin
al portapapeles del servidor X local? Algo en el sentido de:
cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard
sería increíble. ¿Existe algo para hacer esto posible?
No necesitas nada especial; ya que
xclip
funcionastdin
, solo¿Por qué necesitaría ser modificado con
sed
?ssh
es transparente a los datos cuando no se usa como terminal, y se usa comúnmente en tuberías comofuente
stdin
antes de copiarlo en el portapapeles, me gustaría esa opción.ssh
sesión existente (no sería muy seguro si pudiera). Puede configurar lasssh
ControlMaster
cosas para multiplexar conexiones adicionales sobre una existente, pero en realidad no es algo para principiantes y aún lo hace de la misma manera después, cambiando a otro terminal local y ejecutando el comando anterior (que no abre un nuevo ventana de terminal).Así es como lo haría en OSX desde su máquina local
fuente
Si su máquina local está ejecutando Windows (7+), puede usar esto desde la línea de comandos:
fuente
~ / .ssh / config:
/ etc / ssh / sshd_config:
golpetazo:
fuente
Muy similar a las soluciones de @ d-raev y @ william-casarin, sin embargo, es diferente, así que comparto lo que funcionó para mí.
El comando
Explicación
Esto se utiliza
ssh
para crear un túnel seguro, iniciar sesión enuser
@host
oip
, luego ejecutarcat
para imprimir el contenido de<myconffile.conf
ystdout
luego canalizarlo al comandoxclip -sel clip
en su máquina local, que coloca el contenido<myconffile.conf
en el portapapeles de su máquina local.Uso de ejemplo del mundo real
Utilizo esta estructura de comandos para tareas como pegar claves ssh en github (permitiendo una simple selección de ctrl-V o pegar después de ejecutar el comando) con Bash en Ubuntu 16.04 y 18.04. Echa un vistazo
man ssh
,man cat
yman xclip
para el comportamiento y la opción de detalles.fuente
xclip
no se ejecutará ya que no hay X.Tengo un problema similar con el portapapeles de LUbuntu
lxterminal
(probado varios terminales) pegando a unassh
sesión. Si el portapapeles tiene más de aproximadamente 100 bytes, la sesión expira y falla.Si me conecto a través de ssh a casi cualquier servidor CentOS 5.xy luego me conecto al servidor de destino, el pegado del portapapeles funciona sin ningún problema para un tamaño de datos razonable.
fuente
Copiar desde un servidor sin cabeza al portapapeles local, desde dentro de su sesión SSH habitual:
Instalar
ncat
en su máquina local y remota. (En su máquina remota también puede hacerlo connc
o sin formatotelnet
, pero en la máquina local necesitamos las opciones para ejecutar comandos (-c
/-e
) que no están disponibles ennc
distribuciones habituales como Debian y Ubuntu).En su máquina local, configure un servidor que escuche en la interfaz local que copiará el contenido que ingresa en el puerto 10009 a su portapapeles X:
O utilice la versión abreviada equivalente:
SSH en la máquina remota de tal manera que se establezca un túnel inverso desde el puerto 10008 de la máquina remota al puerto 10009 en su máquina local (donde su servidor está escuchando). Puede usar esa sesión SSH para su trabajo normal.
Cuando desee copiar el contenido de un archivo desde una máquina remota al portapapeles local, ejecute en el shell SSH:
Y, por supuesto, es mejor cuando se empaqueta como un acceso directo de shell o script. Podríamos llamarlo
rclip
"portapapeles remoto [copiar a]" en analogía con el conocidoxclip
.Ventajas
No es necesario abrir otra sesión SSH en la máquina remota.
No es necesario
xclip
en la máquina remota, por lo que funciona si no puede instalarlo o no puede usarlo porque es un servidor sin cabeza sin X.Seguridad
Lo hacemos
ncat -l localhost 10009
para el servidor, lo que significa que solo escucha en la interfaz de red con lalocalhost
dirección IP. Esta interfaz de bucle local solo permite conexiones desde su propia máquina (incluidas, en este caso, las de túnel inverso a través de SSH). Entonces, incluso si no está detrás de un firewall, su puerto 10009 no está expuesto a nadie en Internet.Fuente
Adaptado de gist dergachev / ssh-forward-clipboard.md para trabajar en Linux. Esa esencia también contiene instrucciones sobre cómo hacer que el túnel inverso SSH sea un valor predeterminado.
fuente
https://secure.wikimedia.org/wikipedia/en/wiki/Base64
Puede convertir sus datos del portapapeles con Base64 a texto ASCII. Entonces puede empujar eso dentro de una conexión SSH ya existente.
fuente