Como usar o SFTP em um script para extrair arquivos de forma não interativa do host remoto?

3

Eu quero usar um script de shell para puxar um arquivo de outro servidor. Eu escrevi um script onde eu posso fazer isso, mas eu quero que o script funcione de forma não interativa, para que ele não solicite a senha e funcione automaticamente se eu codificar o mesmo e deixar o script ter o que ele precisa.

Já fiz isso antes para FTP , mas em novos servidores, as FTP conexões estão bloqueadas e só podemos usar SCP ou SFTP . Meu script anterior era algo assim, que costumava funcionar com FTP e funcionava bem sem pedir a senha:

#!/bin/bash -vx
ftp -in 100.XXX.XXX.XX<<END_SCRIPT
quote USER username
quote PASS password
bin
prompt off
cd /directory/in/remote/host
lcd /directory/in/local/machine
mget *
bye
END_SCRIPT

Eu tentei o semelhante para SFTP em um script e ele funciona para o modo Interativo, mas como FTP , não consigo usar as opções não interativas para SFTP . A seguir está meu código para buscar arquivos específicos da máquina remota:

#!/bin/bash -vx

path="/tmp/testanks"

sftp [email protected] <<EOT
cd $path
get Bharti*
quit
EOT

Como posso alterar o código acima de maneira que eu possa fornecer a esse usuário o nome de usuário e a senha para torná-lo não interativo.

Entendo que fornecer uma senha codificada é uma preocupação de segurança, mas agora estou mais preocupado em buscar os arquivos imediatamente. Eu realmente aprecio se eu pudesse obter as formas seguras de fazê-lo bem junto com a resposta que eu desejo.

    
por Ankit Vashistha 31.07.2015 / 09:25

2 respostas

3

a solução é usar scp , você adiciona a chave pública do local ao final de remote_files remotos.

então

 scp [email protected]:Bharthi/* $path

no host local, procure em .ssh dir, se você não tiver nenhum .pub, faça o seguinte primeiro (e apenas uma vez)

ssh-keygen (1)
scp-copy-id [email protected] (2)
  1. aceita todos os padrões, NÃO insira um passwd quando solicitar
  2. insira a senha para o nome de usuário @ 100.X.X.X
por 31.07.2015 / 09:42
1

Com o curl :

curl sftp://example.com/file.zip -u user:password 

Observe que para essa Autenticação de chave pública é preferível usar uma senha:

curl sftp://example.com/file.zip -u user

Isso tentará usar ~/.ssh/id_rsa como uma chave privada. Você pode especificar outro com --key .

    
por 13.08.2017 / 22:00