Bonjour a tous,
Mon probleme est assez clair.
La commande scp avec le systeme de clés permet a chaque appel de scp dans mon script de ne me pas me demander le password.
Mais comment peut-on faire si on ne veut pas instaurer le systeme de clés? Dans mon script j'ai 5 scp a faire mais je veux pouvoir moi-meme demander le password, ensuite le mettre dans une variable et ensuite faire un scp avec la variable que j'ai recuperee, c'est-a-dire quelque chose comme:
#!/bin/sh -f
echo taper password
read $mon_passwd1
scp fichier1 user1@hote:/home/tmp<<$mon_passwd1
Quelqu'un a-t-il une solution?
Merci d'avance,
Phil.
# Change de langage
Posté par Bapt (site web personnel) . Évalué à 3.
Ta seule solution est d'utiliser soit un langage type expect qui va permettre de détecter/attendre un retour texte d'une commande et de renvoyer un argument. soit utiliser expect dans des langages permettant de l'utiliser au travers d'un API : perl, tcl, ...
Enfin tu peux utiliser un langage ayant un API SSH comme perl ou ruby avec Net::SSH.
# expect
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 3.
La gelée de coings est une chose à ne pas avaler de travers.
[^] # Re: expect
Posté par piloumon . Évalué à 2.
Merci,
Phil.
[^] # Re: expect
Posté par peck (site web personnel) . Évalué à 5.
Et devine quoi, c'est fait exprès, c'est pour ton bien.
# mot de passe: Pas dans la ligne de commande
Posté par B. franck . Évalué à 2.
C'est peut-être pour ça que tu n'y arrives pas d'ailleurs.
par contre si tu place ce mode passe dans un fichier (avec les bons droits pour pas se le faire piquer) et que tu l'envoies dans le scp, ça marche
scp fichier1 user1@hote:/home/tmp < mon_fichier_passwd
ps: j'ai vu une obscure option -B à scp, sans plus d'info...
[^] # Re: mot de passe: Pas dans la ligne de commande
Posté par piloumon . Évalué à 2.
# scp fichier1 user1@hote:/home/tmp < mon_fichier_passwd
user1@hote:/home/tmp
Je ne crois pas que ca change quelque chose mais je travaille sous AIX.
Phil.
[^] # Re: mot de passe: Pas dans la ligne de commande
Posté par ben (site web personnel) . Évalué à 3.
Benjamin
# ssh-agent
Posté par malin . Évalué à 5.
ssh-agent garde en memoire les cles utilisees pour te logger sur tes diverses machines et les fournit tout seul a chaque fois que tu en as besoin. Si tu penses a mettre un mot de passe pour proteger tes cles, d'un point de vue utilisation ca revient exactement au cas que tu decris:
La session demarre, tu tapes ton mot de passe pour debloquer ton jeu de cles. A chaque login (ssh/scp), ssh-agent fournit la cle pour toi. En passant: pour scp, pense a enlever les bannieres et autres affichages de texte dans le .bash_login ou .bashrc, il n'aime pas ca du tout et plante avec une erreur incomprehensible.
[^] # Re: ssh-agent
Posté par piloumon . Évalué à 1.
Non, je ne veux pas mettre un mot de passe pour proteger mes cles, je veux tout simplement ne pas utiliser de cles, c'est-a-dire que je cherche une solution pour pouvoir copier des fichiers d'une machine a une autre sans que me soit demande le mot de passe ou alors qu'il me soit demande une fois, je le recupere et ensuite a tous les scp que je fais dans mon script, je l'introduis d'une maniere ou d'une autre et voila le tour est joue...
A+
Phil.
[^] # Re: ssh-agent
Posté par malin . Évalué à 4.
ssh propose le login par cles precisement pour contourner les problemes de securite causes par le login via mot de passe, et ssh-agent est la pour te faciliter la vie dans cette voie. Le probleme du stockage du fichier de cles en local est egalement partiellement resolu si tu transportes ton fichier de cles dans... une cle USB.
Si tu connais Python, tu peux eventuellement regarder aussi 'paramiko', qui encapsule des liaisons ssh (donc scp) de facon relativement elegante, ce qui permet de scripter assez facilement des operations de transfert repetitives. On pourrait imaginer un script qui refuse de se declencher pour les copies tant qu'une cle USB n'a pas ete inseree sur le poste local, contenant un fichier de cles adequats pour le login sur tes machines distantes.
Bon enfin ce que j'en dis... Peut-etre que tu as d'autres contraintes sur les cles/mots de passe que tu voudrais exposer? Si ton souci principal est un souci de securite, fais attention par exemple au process expect que tu lances (un trojan est si vite installe...).
[^] # Re: ssh-agent
Posté par piloumon . Évalué à 1.
Alors pour n'embeter personne pour le moment, j'ai voulu cree mon petit script qui m'automatise tout ca.
Cela dit, j'enverrai mon script aux administrateurs en leur demandant ce qu'ils en pensent et sinon qu'ils nous creent le systeme de cles...
Merci,
Phil.
# Script shell + expect
Posté par piloumon . Évalué à 2.
SCRIPT test.sh
--------------------
#!/bin/sh -f
echo password du user:
read p1
echo OK
./script.exp $p1 fichier user@hote:/home/user/tmp"
echo FIN
exit 0
SCRIPT script.exp
------------------------
#!/usr/bin/expect -f
set force_conservative 0 ;# set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
set fic [lindex $argv 1]
set dir [lindex $argv 2]
spawn scp -r $fic $dir
set pp [lindex $argv 0]
send -- "PROCEDURE EN COURS...\r"
expect -exact "\ruser@hote's password: "
send -- "$pp\r"
expect eof
Voila, voila. J'ai genere mon script expect avec autoexpect et ensuite je l'ai modifie a mon gout.
Merci a tous,
Phil.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.