Comment faire pour exécuter la commande sftp avec un mot de passe à partir de script Bash?
J'ai besoin de transférer un fichier journal à un hôte distant à l'aide de sftp à partir d'un hôte Linux. J'ai été fournies des informations d'identification pour la même chose de mon groupe d'opérations. Cependant, depuis je n'ai pas de contrôle sur les autres hôte, je ne peux pas générer et de partager des clés RSA avec l'autre hôte.
Donc, il y a un moyen d'exécuter la sftp
de commande (avec le nom d'utilisateur/mot de passe fourni) à l'intérieur du script Bash par l'intermédiaire d'un cron travail?
J'ai trouvé un similaire Débordement de Pile question, Spécifiez un mot de passe pour sftp dans un script Bash, mais il n'y a pas de réponse satisfaisante à mon problème.
Vous devez vous connecter pour publier un commentaire.
Vous avez un peu d'options autres que l'aide de l'authentification par clé publique:
Si vous décidez de donner sshpass une chance ici est un extrait de script pour le faire:
expect
que d'autres alternatives ne sont pas présents sur l'ordinateur hôte. Avecexpect
j'obtiens cette erreur..Permission denied (publickey,keyboard-interactive).
. S'il vous plaît pouvez-vous me faire savoir, comment faire pour se connecter à un sftp hôte avec passwd à partir d'un script bash.SSHPASS=password sshpass -e ...
devrait le faire.sshpass -p "my_password" sftp -oPort=9999 user@host:dir/file.log
export SSHPASS=your-password-here
va dans l'env de l'utilisateur, mais commentps -ef
révéler env d'un autre utilisateur?-oBatchMode=no
a été cruciale la pièce manquante pour moi.sshpass
commande? Je l'utilise tous les jours sur mon système.> ~/file.out 2>&1
de rediriger la sortie et stderr dans un fichier.Un autre moyen serait d'utiliser lftp:
L'inconvénient de cette méthode est que les autres utilisateurs de l'ordinateur peut lire le mot de passe à partir d'outils comme
ps
et que le mot de passe peut devenir une partie de votre coquille de l'histoire.Une meilleure sécurité qui est disponible depuis LFTP 4.5.0 est le réglage de la
LFTP_PASSWORD
variable d'environnement et de l'exécution de lftp avec--env-password
. Voici un exemple complet:LFTP comprend également un endroit frais fonctionnalité de mise en miroir (peut inclure les supprimer après avoir confirmé le transfert '--Remove-source-files"):
put-script
:open sftp://user:password@host; put local-file.name; exit
Que de courirlftp -f put-script
de Cette façon, vous n'avez pas à avoir le nom d'utilisateur et mot de passe en ligne de commande et permet de définir des autorisations plus restrictives pour votre fichier de script.lftp
que de déconner avecsftp
etsshpass
. La bonne réponse.Attendre est un excellent programme à utiliser.
Sur Ubuntu installer avec:
Sur un CentOS Machine de l'installer avec:
Permet de dire que vous voulez établir une connexion à un serveur sftp et puis de télécharger un fichier local à partir de votre ordinateur local vers le serveur distant sftp
Cela ouvre une connexion sftp avec votre mot de passe pour le serveur.
Puis il va vers le répertoire où vous voulez envoyer votre fichier, dans ce cas "logdirectory"
Cette télécharge un fichier de log dans le répertoire local trouve dans /var/log/avec les fichiers du nom de fichier.journal de la "logdirectory" sur le serveur distant
Vous pouvez utiliser lftp de manière interactive dans un script shell, de sorte que le mot de passe ne sera pas enregistré .bash_history ou similaire en procédant comme suit:
Ajoutez les lignes suivantes à votre fichier:
Et écrire/quittez l'éditeur vi après avoir modifier le host, user, pass, et un répertoire pour votre placer le fichier en tapant
:wq
.Faites ensuite votre script exécutablechmod +x test_script.sh
et de l'exécuter./test_script.sh
.M'a récemment demandé de passer de ftp sftp, afin de sécuriser la transmission de fichiers entre les serveurs. Nous sommes à l'aide de SSH Tectia paquet, qui dispose d'une option
--password
à passer le mot de passe sur la ligne de commande.exemple :
sftp --password="password" "userid"@"servername"
Lot exemple :
J'ai pensé que je devais partager cette information, depuis que je suis à la recherche à divers sites web, avant d'exécuter la commande help (
sftp -h
), et j'étais surpris de voir l'option de mot de passe.ps
commande serait en mesure de voir votre mot de passe.unknown option -- - usage: sftp [-1246aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher] [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit] [-o ssh_option] [-P port] [-R num_requests] [-S program] [-s subsystem | sftp_server] host sftp [user@]host[:file ...] sftp [user@]host[:dir[/]] sftp -b batchfile [user@]host
Vous pouvez remplacer par activation de l'authentification sans Mot de passe. Mais vous devez l'installer clés (pub, priv) avant d'aller pour cela.
Exécutez les commandes suivantes sur le serveur local.
Appuyez sur ENTRÉE pour toutes les options invité. Pas de valeurs doivent être saisies.
Se connecter à un serveur distant à l'aide de la commande suivante
Exécuter les commandes suivantes au serveur distant
Exécuter la commande suivante sur le serveur local pour tester l'authentification sans mot de passe.
Il doit être raccordé sans mot de passe.
lftp -p ${port} -u ${login_id},${password} ${ip_number}
lorsqu'il est appelé à partir d'un script shell imprimer certains où? Comment avez-vous résolu en dehors de sshpass?lftp
et de s'appuyer sursshpass
à partir de Mac et Linux.Combiner sshpass avec un verrouillé les informations d'identification de fichier et, dans la pratique, il est aussi sûr que quoi que ce soit - si vous avez de la racine sur la boîte pour lire les informations d'identification de fichier, tous les paris sont hors de toute façon.
Bash programme à attendre pour sftp pour demander un mot de passe, puis de l'envoyer sur:
Vous devrez peut-être installer attendre, modifier le libellé de 'Mot de passe' minuscules 'p' pour correspondre à ce que votre invite reçoit. Le problème ici est que l'on expose votre mot de passe en clair dans le fichier ainsi que dans l'historique des commandes. Dont près de défaites le but d'avoir un mot de passe dans la première place.
Vous pouvez utiliser sshpass pour elle. Ci-dessous sont les étapes
sudo apt-get install sshpass
Pour Ubuntu -> ssh user@IP -> entrez "oui"
Ci-dessous est un exemple de code pour la guerre d'adaptation à distance tomcat
sshpass -p '#Password_For_remote_machine' scp /home/ubuntu/latest_build/abc.war #user@#RemoteIP:/var/lib/tomcat7/webapps