Script de upload do SFTP, não há chave

1

Eu preciso enviar um arquivo para um servidor.

O servidor faz upload usando o SFTP. Após a autenticação, qualquer execução de comando é proibida, portanto, não posso entrar diretamente no SSH, preciso entrar diretamente no subsistema SFTP.

Por exemplo.

ssh -N [email protected] funciona bem, exceto que não posso fazer SFTP em nada.

No entanto, posso fazer sftp [email protected] bem.

Problema: preciso automatizar isso, a autenticação é interativa por teclado, não baseada em chave. Eu não possuo o servidor ao qual estou me conectando, eles simplesmente disseram "Aqui está a senha, faça o upload dos arquivos toda semana". E ninguém sabe nada sobre chaves ou coisas assim.

sftp -b Os scripts em lote não permitem a autenticação interativa do teclado.

Estou farto de carregar manualmente o arquivo. Eles enviaram a senha do 8-charecter por e-mail não criptografado e contém 3 dos mesmos números no final e uma palavra do dicionário (por exemplo, "Words777") - permite que a segurança fingida não seja um problema aqui.

Posso criar a chave SSH apenas com a senha? Lembre-se, não tenho acesso ao outro servidor. Posso roteirizar isso de alguma forma? Eu tentei usar pacotes diferentes, e até rsync para fazer o upload, mas todos eles querem acessar o SSH diretamente, em vez de entrar diretamente no subsistema SFTP.

    
por Incognito 28.04.2011 / 18:37

3 respostas

2

Instale Espere que permita criar scripts para situações como esta.

sudo apt-get install expect

Configurar um script de shell

#!/bin/bash
HOST=""
USER=""
PASS=""

# Sorry for the offensive "assword", it's to cope with "Password" and "password".

VAR=$(expect -c "
  spawn sftp $USER@$HOST

  expect \"assword:\"
  send \"$PASS\r\"

  expect \"\\$\"
  send \"ls\r\"

  expect -re \"$USER.*\"
  send \"exit\"
")

echo "==============="
echo "$VAR"
    
por Incognito 28.04.2011 / 20:39
2

Eu acho que se você criar uma chave ssh sem protegê-la com uma "frase secreta", você pode pular a parte interativa do teclado e criar facilmente o script de upload que você precisa. Veja por exemplo aqui :

ssh-keygen -t rsa -C "Your Name" -f your_key

Isto criará os arquivos necessários, você então terá que copiar o arquivo público (* .pub) no servidor remoto.

    
por dandelionmood 28.04.2011 / 19:01
0

Use Socat .

Exemplo:

(sleep 2; echo password) | socat - EXEC: "sftp -o batchmode=no -o PubkeyAuthentication=no -b batchfile user@host",pty,setsid,ctty
    
por user141292 16.10.2012 / 14:18