Created: 2022-10-03 20:34 Updated: 2022-10-03 20:34

Esta dica é para quem precisa transferir arquivos de ou para um servidor tendo apenas acesso via SSH (sem usar o SCP).

Exemplo: imagine que você precise copiar um arquivo do servidor B, mas que o acesso a ele só possa ser efetuado através do servidor A, isto é, para acessar o servidor B seja necessário primeiro acessar o servidor A (via SSH, claro) e, a partir dele, executar uma nova sessão SSH para o servidor B (considerndo, claro, que você não queira ou não possa usar o recurso de forwarding no servidor A). Neste caso, o SCP só será útil se você puder acessar o servidor A, copiar para ele os arquivos de B usando o SCP (por exemplo), encerrar a sessão SSH com o servidor e e só então, usar o SCP para copiar os arquivos do servidor A para seu computador (e, possivelmente, esquecer de apagá-los de A).

Existe uma forma relativamente simples de fazer isso usando o comando zssh.

Primeiro, instale o ZSSH:

sudo apt install zssh

Depois, use o zssh para acessar o servidor, da mesma forma que faria com o SSH:

zssh usuario@ssh

COm esta sessão, você pode transferir arquivos tanto na sessão atual como em sessões SSH normais executadas a partir da sessão SSH: basta executar no sistema remoto o comando sz (send) ou rz (receive) e teclar CTRL SPACE e usar os comandos rz (receive) ou sz (send) dependendo do que você quer fazer.

Por exemplo, vamos imaginar que preciso transferir o arquivo bind.zip que está no servidor 10.10.0.1, mas que o acesso a ele só é possível via o servidor 200.200.200.200. Primeiramente, acessaríamos o 200.200.200.200 usando o zssh:

zssh usuario@200.200.200.200

Depois, a partir deste servidor, executaríamos uma sessão SSH normal para o servidor 10.10.0.1:

ssh usuario@10.10.0.1

Neste ponto, já temos acesso ao arquivo bind.zip, já que estamos no servidor fonal (10.10.0.1). Então, executaríamos o comando sz (send thru ZMODEM) para iniciar a transmissão do arquivo:

sz bind.zip
�*B00000000000000

O próximo passo é ativar o modo comando do ZSSH: pressione CTRL SPACE - aparecerá o prompt do ZSSH:

zssh>

Digite rz (receive thru ZMODEM) e o arquivo será transferido para seu computador local, na mesma pasta onde o ZSSH foi executado:

zssh > rz
Receiving: bind.zip                                                  
Bytes received:   15402/  15402   BPS:314601

Transfer complete

Para sair do modo comando do ZSSH e voltar ao terminal remoto, digite quit:

zssh > quit

Fui!