Como usar o scp em um script bash sem especificar a senha?

3

Eu sou um novato e estou escrevendo um script bash que permitirá a transferência de arquivos entre dois computadores. BTW, existe uma alternativa mais segura para scp?

Atualmente, estou fazendo isso manualmente, usando o scp. O servidor remoto sempre me pede a senha e eu forneço isso. Eu quero automatizar isso (daí o script bash). No entanto, eu não quero fornecer minha senha em texto simples (ou se em tudo - eu estava sob a impressão de que o SSL aberto acaba com senhas e usa certificados, etc?).

Alguém pode explicar como posso automatizar meu processo atual, sem exibir explicitamente minha senha.

Estou executando no Ubuntu 10.0.4

    
por morpheous 30.07.2010 / 11:55

2 respostas

7

Para fazer o login sem senha, você precisa configurar a autenticação baseada em chave. Há uma série de tutoriais por aí - esse parece um bom lugar para começar (editar: o site original caiu da Internet, este link é para a última cópia arquivada pela WayBackMachine).

Se você colocar uma frase secreta na sua chave (recomendado), você ainda precisará fornecer isso quando fizer o login, mas poderá usar o ssh-agent para reduzir o tempo necessário para isso.

Se você precisar de scripts que usem SSH / SCP para executar autônoma, não precisará ter uma frase secreta na chave, mas, nesse caso, é absolutamente necessário manter esse arquivo de chave seguro, de modo que ninguém mais possa lê-lo. poderá autenticar nesse servidor como você sem nenhuma senha / frase secreta.

    
por 30.07.2010 / 12:14
0

forneça uma senha para scp

Pipar sua senha para a entrada padrão do scp não funcionará:

echo "password" | scp file user@host:/dir/to/copy/to

porque o scp não lê a entrada padrão por motivos de segurança.

Use a ferramenta sshpass:

Você pode ter que instalar o sshpass como root, já que não é padrão.

sshpass -p 'mypassword' scp -r [email protected]:/home/a/moo.txt /home/b/bar.txt
    
por 12.12.2012 / 05:28