Copiar diretório de um servidor ssh para outro

Preciso fazer a cópia de um diretório em um servidor com um script .sh rodando em outro servidor. Li sobre o comando scp e vi alguns exemplos de uso, mas não descobri como eu coloco a senha do servidor que estou acessando para fazer a cópia direto no meu script, segue um exemplo do comando scp:

scp /path/to/file username@a:/path/to/destination

Não precisa ser só uma linha, pode ser mais…

=================

=================

2 Respostas
2

=================

1 – Crie as chaves como ja informado nos comentários. Use os comandos abaixo:

ssh-keygen

Responda as perguntas, pode teclar para todas

2- Copie a chave para a máquina destino

ssh-copy-id host_ou_ip_destino

Caso a máquina destino utilize um outro usuario ou porta no SSH faça a copia assim:

ssh-copy-id “user@vm.local -p 2200”

Confirme as opções que aparecem de gravação de finger-print.

3 РTestando a autentica̤̣o com chaves.

ssh host_ou_ip_destino

4- Para copiar o diretório, apesar de enviar um tar seja mais eficiente conforme comentado no seu post pelo Daniel Omine, utilize:

scp -rp dir_origem user@vm.local:/dir_destino

EDITANDO PARA GERAR TAR LOCAL
5- Para gerar um tar local com os arquivos remotos, use:

ssh user@vm.local “tar -cvzf – /dir_remoto/origem/” > local.tar

Fonte: Copiar diretório: http://serverfault.com/a/264598/209974 Gerar
e copiar chave:
Usando SSH ou SCP sem senha

  

 

Oi Celso, funcionou do jeito que vc respondeu, só mais uma dúvida, como criar o tar direto na outra máquina e puxar o tar em vez do diretorio ?
– Alan PS
8/08 às 18:47

  

 

Obrigado Celso!!!!!
– Alan PS
8/08 às 19:03

  

 

No exemplo que postei ali, fica mais fácil que com SCP, porque o tar é criado na máquina local direto. Não vai nem gerar um tar na máquina remota.
– Celso Marigo Jr
8/08 às 19:04

Você pode usar o sshpass:

sshpass is a utility designed for running ssh using the mode referred
to as “keyboard-interactive” password authentication, but in
non-interactive mode.

Para instalar no Ubuntu/Debian:

sudo apt-get install sshpass

No CentOS:

yum -y install sshpass

Para usá-lo, faça assim:

#!/bin/bash
sshpass -p “” scp -r /path/to/file user@example.com:/path/to/destination

A opção -r do scp é usada para copiar recursivamente o diretório.

  

 

não posso usar o comando sudo no servidor, ele não permite!
– Alan PS
5/08 às 13:47

  

 

como eu uso a chave depois ? Faço a mesma chamada que coloquei na pergunta ? scp /path/to/file username@a:/path/to/destination
– Alan PS
5/08 às 17:31

  

 

estou com a id_rsa.pub dentro da pasta /.shh/authorized_keys/, dai eu uso o comando scp /path/to/diretory username@host:/path/to/destination, na sequencia ele pede a senha e o pior é q estou colocando a senha e a tela do putty fica travada, se eu aperto enter ele desce a linha mas nada acontece, e acho q não era pra pedir a senha
– Alan PS
5/08 às 17:52

  

 

sim o arquivo já está no servidor remoto! continua pedindo a senha
– Alan PS
5/08 às 17:59

  

 

eu digitei a senha do servidor remoto e pressionei Enter! gerou o 3 arquivos e o .pub enviei pro servidor remoto
– Alan PS
5/08 às 18:25