Upload para SSH na maneira XMODEM?

3

Eu sei que posso usar o comando scp e copiar qualquer arquivo sempre que puder vir com o cliente ssh.

Mas vamos ver com mais detalhes. Suponha que eu já tenha logado com o cliente ssh. Isso significa que já entrei no nome do servidor e no nome e senha do usuário. Suponha também que eu tenha feito alguns cd s. Isso significa que eu já entrei no diretório de destino.

Eu não quero inserir esses dados novamente. Eu não vejo nenhum motivo para fazer qualquer trabalho duas vezes.

Agora eu quero fazer o upload de algum arquivo para esse lugar, onde eu já sou.

É possível fazer isso?

Nos tempos de modems telefônicos, havia vários protocolos, permitindo que o servidor iniciasse o upload de arquivos pelo cliente. Se eu entrasse em algum comando, meu cliente de terminal estava abrindo a caixa de diálogo de seleção de arquivos e eu era capaz de selecionar o arquivo a ser carregado.

Décadas passaram. Isso é possível agora no século 21?

    
por Dims 29.06.2014 / 19:53

2 respostas

1

Eu não sei se esse método é mais fácil do que apenas usar o scp, e vou fazer muitas suposições sobre o cliente ssh que você está usando e o sistema operacional de suas máquinas de origem e destino ter. Eu só espero que isso seja útil.

Se você já efetuou login na máquina e deseja transferir um arquivo sem precisar fazer login novamente, é possível abrir um túnel como este:

  • Na linha de comando, digite ~ C, você entrará no console de comando do ssh:

ssh>

  • Digite -L 4444: localhost: 4444 para encaminhar a porta 4444 em sua máquina local para a porta 4444 na máquina remota

ssh> -L 4444:localhost:4444 Forwarding port.

  • Quando você vir seu prompt na sua máquina remota novamente, digite:

nc -l 4444 > my_file.txt

Isto irá escutar na porta 4444 e enviar a saída para my_file.txt

  • Agora, na sua máquina local, você faz:

nc localhost 4444 < my_file.txt

E isso enviará meu_arquivo.txt através do encapsulamento encaminhado pelo ssh para a máquina remota, e o netcat (comando nc) irá enviá-lo para o arquivo na máquina remota. Se você quiser transferir um diretório inteiro, use tar e redirecione para a entrada padrão e a saída padrão. ( man tar é seu amigo).

    
por 04.02.2015 / 16:35
1

Se você estiver usando algo como SecureCRT (Windows) ou iTerm2 (Mac), você pode usar o Zmodem para transferir arquivos sem usar scp / nc / etc. Eu uso isso para mover arquivos rapidamente sem ter que abrir uma segunda sessão. O servidor Unix precisará ter o pacote lrzsz instalado - algumas distros têm isso instalado por padrão, outras não.

Se você estiver usando o SecureCRT, basta executar "sz filename.txt" e a transferência será iniciada automaticamente; Executando "rz" irá aparecer uma caixa de seleção de arquivos. Se você está no iTerm2, você tem que fazer um pouco de configuração para fazê-lo funcionar, começando com a instalação do pacote lrzsz (via Homebrew ou outro gerenciador de pacotes), e então configure o iTerm2 para escutar a sequência de caracteres Zmodem. Isso é descrito aqui: link

    
por 04.02.2015 / 17:28