Comment faire pour envoyer le mot de passe en utilisant sftp fichier de commandes
Je suis en train de télécharger un fichier à partir du site sftp en utilisant le script de commandes. J'obtiens l'erreur suivante:
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
Lors de l'exécution de la commande:
sftp -b /home/batchfile.sftp <user>@<server ip>:<folder>
la batchfile.sftp
comprend ces données:
password
lcd [local folder]
cd [sftp server folder]
get *
bye
Remarque: Il est de travail lors de l'exécution à l'invite de commandes en tant que
sftp <user>@<server ip>:<folder>
Mais j'ai besoin de la capacité à saisir le mot de passe automatiquement.
- Est-ce de travailler, en supprimant le mot de passe dans le fichier batch ? Le reste des fonctionnalités fonctionnent bien, en entrant le mot de passe manuellement?
- Stocker le mot de passe en clair dans un fichier n'est évidemment pas sûr - si vous ne voulez pas taper un mot de passe à chaque fois que je suggère fortement à l'aide de l'authentification par clé RSA.
- Stocker le mot de passe dans un fichier de texte brut est évidemment va être tout aussi sûr que l'utilisation d'une clé RSA de l'authentification sans mot de passe sur la touche. Qui est vraiment la seule option si vous allez à automatiser les choses. Juste assurez-vous que le fichier de texte brut est uniquement lisible par le propriétaire du fichier (tout comme ce qui est nécessaire pour les clés ssh)
- juste une pensée, mais une approche que j'utilise qui semble aussi sécurisé que privé local clés ssh est de mettre le fichier dans le ~/.ssh répertoire avec les mêmes permissions que .ssh/{your_private_keyfile_name}. Je ne recommande pas les approches ci-dessous, qui a mis le mot de passe dans .bashrc, surtout de la mettre exportation, dans une variable. .bashrc est lu par soooo beaucoup de processus, et le mot de passe est en "texte brut" dans vos variables d'environnement. En cas de doute, faites-le .ssh style 🙂
Vous devez vous connecter pour publier un commentaire.
Vous faudra installer le sshpass programme. Alors:
sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH USER@HOST
Évidemment, il est préférable de configurer l'authentification par clé publique. Utilisez uniquement ce qui est impossible à faire, pour quelque raison que ce soit.
export SSHPASS='your_password'
à~/.bashrc
et de courir avec-e
drapeau. J'ai utilisé cette cmd dans un projet comme ceci:echo 'ls -t upload/*.xml' | sshpass -e sftp -oBatchMode=no -b - [email protected] | grep -v "sftp>" | head -n1
Si vous générez un tas de commandes à exécuter, puis d'appeler ce script à partir d'un terminal, vous pouvez essayer ce qui suit.
Vous sera alors demandé de saisir votre mot de passe (comme d'habitude), cependant, toutes les commandes dans le script de s'exécuter après que.
Ce n'est clairement pas complètement automatisés option qui peut être utilisé dans un
cron
travail, mais il peut être utilisé à partir d'un terminal.Je vous conseille d'exécuter sftp avec l'option-v. Il devient beaucoup plus facile à comprendre ce qui se passe.
Le manuel stipule clairement:
En d'autres termes, vous devez établir un publickey d'authentification. Ensuite, vous serez en mesure d'exécuter un script batch.
P. S.
Il est faux de mettre votre mot de passe dans votre fichier de commandes.
le contenu du fichier est:
avoir la clef run:
Vous mentionnez des fichiers batch, ne suis-je corriger puis en supposant que vous parlez d'un système Windows? Si vous ne pouvez donc pas utiliser sshpass, et vous aurez à passer à une autre option.
Deux de ces options, à la suite d'diamétralement opposée, les philosophies sont:
De toute façon, le changement du mot de passe d'authentification PKI est fortement recommandé.