Copia a entrada para a área de transferência através do SSH?

26

Este é o meu caso de uso:

  • Frequentemente estou conectado a outros computadores através do SSH para o trabalho e frequentemente preciso copiar e colar documentos / texto do servidor para editores localmente em execução para escrever exemplos e compartilhar texto.
  • Muitas vezes, se o texto for pequeno o suficiente, vou simplesmente copiar a saída do meu programa terminal (gnome-terminal no momento) e colá-lo.
  • No entanto, quando se trata de documentos inteiros, minhas opções são bastante limitadas. Eu posso copiar o documento chunk-by-chunk ou scp para a máquina local.

Existe uma maneira de usar um programa como xclip , o que me permitirá copiar o stdin remoto para a área de transferência do servidor X local? Algo para o efeito de:

cat myconffile.conf | sed {...} | copy-over-ssh-to-local-clipboard

seria incrível. Existe alguma coisa para tornar isso possível?

    
por Naftuli Kay 15.07.2011 / 01:41

7 respostas

15

Se você executar o ssh com o encaminhamento do X, isso é transparente: comandos remotos (incluindo xclip ) têm acesso ao seu servidor X (incluindo seu teclado). Certifique-se de ter ForwardX11 yes no seu ~/.ssh/config e X11Forwarding yes no servidor sshd_config (dependendo de suas distribuições, essas opções podem estar ativadas ou desativadas por padrão).

<myconffile.conf sed {...} | xclip -i

Existem outras maneiras de trabalhar em arquivos remotos que podem ser mais convenientes, por exemplo, montando diretórios remotos em sua máquina local com SSHfs , ou abrindo arquivos remotos no Emacs com o Tramp . Se você tem o SSH e o FUSE configurado e o SSHfs instalado, o SSHfs é tão fácil quanto mkdir ~/net/myserver; sshfs myserver:/ ~/net/myserver . Se você tem o ssh configurado e o Emacs instalado, o Tramp é tão fácil quanto abrir /myserver:/path/to/file .

    
por 15.07.2011 / 02:06
5

Você não precisa de nada especial; já que xclip funciona acima de stdin , apenas

ssh remotehost xclip < myconf.conf

Por que precisaria ser modificado com sed ? ssh é transparente para os dados quando não é usado como um terminal e é comumente usado em pipelines como

tar cfz - somedir | ssh remotehost 'cd destdir; tar xfz -''
    
por 15.07.2011 / 01:55
4

Veja como você faria isso no OSX da sua máquina local

ssh remotehost.com "<some/file.txt" | pbcopy
    
por 02.04.2013 / 16:07
2

se a sua máquina local estiver executando o windows (7+), você pode usar isso da CommandLine:

ssh user@server cat /home/user/file | clip
    
por 05.12.2014 / 16:34
1

~ / .ssh / config:

Host REMOTEHOST
    ...
    ForwardX11 yes

/ etc / ssh / sshd_config:

X11Forwarding yes

bash:

$ xclip -o | ssh REMOTEHOST 'DISPLAY=:0 xclip -i'
    
por 04.04.2016 / 10:35
0

Eu tenho um problema semelhante com lxterminal do LUbuntu (testei vários terminais) colando a área de transferência em uma sessão ssh . Se a área de transferência tiver mais de 100 bytes, os tempos limite da sessão falharão.

Se eu conectar via ssh a praticamente qualquer servidor do CentOS 5.xe, em seguida, conectar-me ao servidor de destino, a pasta da área de transferência funcionará sem qualquer problema para qualquer tamanho de dados razoável.

    
por 05.08.2011 / 15:36
-1

link

Você pode converter seus dados da área de transferência com Base64 para texto ASCII. Então você pode empurrar isso através de uma conexão SSH já existente.

    
por 16.07.2011 / 10:22