sftp script para obter um arquivo da máquina remota

3

Eu uso um script, que contém a linha:

sftp    [email protected]:/dir/file.txt

Quando executo o script, ele pede minha senha:

[email protected]'s password:

No entanto, não quero ser solicitado a digitar minha senha. Eu quero meu script automatizar a entrada de senha e baixar os arquivos

Gente, eu não quero fazer isso. Tudo o que eu quero pegar esse prompt dentro do script e colocar a senha. É possível?

sshpass pertence ao bash?

isto não está funcionando de todo

    
por user83570 09.09.2014 / 20:09

4 respostas

4

O SFTP é basicamente SSH + SFTP no lado do servidor, então o que você precisa é de algum tipo de autenticação não interativa, como chaves privadas e públicas. Dependendo do SO que você está usando, você pode gerar uma chave usando ssh-keygen e copiar uma chave pública para o servidor usando o comando ssh-copy-id .

    
por 09.09.2014 / 20:29
3

A melhor maneira simples:

sshpass -p 'password123' scp -- [email protected]:/dir/file.txt /local/dir

sshpass deve ser um trabalho e para sftp também ... Não se esqueça de verificar as permissões para o script com senha criptografada.

UPD: você precisa instalar o comando sshpass by (para a distro baseada no debian):

apt-get install sshpass
    
por 09.09.2014 / 20:42
2

Outra maneira de automatizar esse processo é usar o script de espera. Aqui está um exemplo:

por exemplo:

  #!/usr/bin/expect -f

   spawn sftp [email protected]:/dir/file.txt
   expect "[email protected]'s password :"
   send "mypassword123\r"
   send "exit\r"

Você pode obter mais informações sobre o aqui ou apenas no Google     

por 09.09.2014 / 22:40
1

Você deve usar a autenticação baseada em chave para não precisar de uma senha em primeiro lugar.

Aqui está um tutorial detalhado sobre como fazer isso: link

    
por 09.09.2014 / 20:28