Installer sa clé ssh sur une machine distante quand on n'a que le mot de passe
Quand on n'a que le mot de passe pour un ensemble de nombreuses machines, c'est pénible d'avoir à le taper à chaque fois, pour chaque machine. Ici une solution pour éviter de le taper plusieurs fois.
- Mettre la liste des machines sur lesquelles ça doit être fait dans un fichier texte avec un fqdn par ligne :
hosts-sur-lesquels-mettre-sa-cle-ssh
toto.titi.com tata.titi.com tutu0.titi.com tutu1.titi.com … tutu9.titi.com
- Ajouter les nouvelles machines du fichier précédent dans le
~/.ssh/known_hosts
:
Ajouter les nouvelles machines aux known hosts
grep -v '^#\|^[[:space:]]*$\|^\[[^]]*\]$' ~/hosts-sur-lesquels-mettre-sa-cle-ssh | ssh-keyscan -H -f - >> ~/.ssh/known_hosts
- Faire l'opération suivante :
fabric
fab -I -A --connection-attempts=3 --user=monlogin -i ~/.ssh/id_rsa \ --hosts=$(for h in $(cat ~/hosts-sur-lesquels-mettre-sa-cle-ssh |grep -v '^#'); do echo -n "$h," ; done | sed -e 's/,$//') \ -- "mkdir ~/.ssh ; chmod 700 ~/.ssh ; ssh-add -L >> ~/.ssh/authorized_keys ; chmod 600 ~/.ssh/authorized_keys"
- Après ça, ça doit marcher.
-I
pour demander le mot de passe au prompt une seule fois pour toute l'opération.-A
pour transporter le ssh-agent.
Voir aussi