como iniciar uma transferência sftp através do console

0

Eu preciso mover 5 GB de arquivos de um host remoto para outro host remoto, o que não disponibiliza o comando scp através do console. Então, estou pensando em qualquer outra opção que não seja baixar os arquivos para a minha máquina local, apenas para reenviá-los para o servidor final.

O servidor de destino usa o sftp. Seria possível iniciar um "download" do sftp para o servidor de destino através do console do ssh?

Se sim, quais são os esquemas de comando?

    
por pixeline 17.12.2012 / 14:03

3 respostas

0

chaves ssh significam que, como alguns usuários, digamos, pixeline, quando você está conectado ao serverC, quando você digita

ssh serverA

Ele conecta você diretamente com a solicitação de senha.

Se houver chaves, isso deve funcionar para você

#copy from serverA to serverB from serverC - you are logged to serverC
   ssh pixeline@serverA  'cat /path/to/filename | ssh pixeline@serverB "cat > /path/to/remotefilename " '

Ele não funciona bem sem chaves públicas ssh - este é um passo a passo de como: link

NOTA: seu diretório home deve ter pelo menos a proteção 755 e o diretório .ssh em casa deve ser 700. Em todos os 3 servidores.

Divirta-se ... Você DEVE fazer isso funcionar e, se quiser fazer todos os arquivos ao mesmo tempo, podemos experimentar o tar.

    
por 26.12.2012 / 22:29
0

Se todos os servidores forem baseados em linux ou unix, você poderá usar o rsync, pois seria o modo mais rápido de concluí-lo.

    
por 26.12.2012 / 22:56
0

Se o sftp estiver disponível no servidor remoto, o comando para invocá-lo será (drum-roll por favor):

sftp

Funciona como qualquer outro programa de FTP da CLI. Explicar todas as coisas que você pode fazer com isso é um pouco grande para uma resposta de superusuário, então apenas leia a manpage dele.

Agora, seria um pouco incomum para um sistema ser configurado para proibir o scp, mas permitir o sftp. Não que não possa ser configurado dessa forma, mas a maioria dos administradores que bloqueiam um bloqueia o outro.

Se você se encontrar naquele barco, então você pode aproveitar o fato de que o ssh permite que você execute comandos remotos através de qualquer programa de arquivamento ou cópia que funcione com stdin e stdout. Por exemplo:

tar -c <files or directories to archive> | ssh user@host tar -x

ou

dd if=file.to.transfer | ssh user@host dd of=destination.file

Isso funciona porque, se esses programas não tiverem um arquivo especificado, serão padronizados para stdin ou stdout conforme apropriado. Então você cria um arquivo ou faz um slurp em um arquivo e despeja o resultado para stdout, e então canaliza esse stdout para o stdin do ssh, que está executando um programa que irá convertê-lo de volta nos arquivos que você quer.

Dependendo das condições da rede e das características do arquivo, você pode querer invocar as porções sftp ou ssh desses comandos com -C para compactar o tráfego para que não demore tanto.

    
por 21.10.2015 / 23:37