Envoyez le mot de passe via stdin dans `ssh-copy-id`

11

J'ai besoin d'automatiser certains déploiements d'identité, idéalement en utilisant ssh-copy-id.

J'essaie de fournir le mot de passe via stdin, ce qui est possible sshen utilisant le -Sdrapeau. Je suis conscient que je peux envoyer des options supplémentaires pour sshutiliser l' -oindicateur dans la ssh-copy-idcommande, mais il n'y a aucun exemple d'utilisation de cet indicateur dans la page de manuel.

J'ai donc essayé de transmettre le mot de passe SSH ssh-copy-idvia stdin en utilisant:

$# echo $TMP_PASS | ssh-copy-id -p2222 -i key.pub user@host -o "-S"

Mais tout ce que je reçois c'est:

/bin/ssh-copy-id: ERROR: command-line: line 0: Bad configuration option: -s

ÉDITER:

J'essaie de fournir le mot de passe via stdin, ce qui est possible sshen utilisant le -Sdrapeau.

Cette affirmation est fausse. J'ai lu ce drapeau de l' sudohomme;

2grit
la source

Réponses:

15

Vous voudrez peut-être essayer d'installer sshpass et modifier votre appel à ssh-copy-id:

sshpass -p "$TMP_PASS" ssh-copy-id
dhag
la source
lol, pas sur mac et quand brew installon essaie, j'obtiens "Erreur: Aucune formule disponible avec le nom" sshpass "Nous n'ajouterons pas sshpass car il est trop facile pour les utilisateurs novices de SSH de ruiner la sécurité de SSH."
tofutim
Il y a des instructions pour l'installer avec homebrew sur osx ici gist.github.com/arunoda/7790979#installing-with-homebrew Il vous suffirait de lancerbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
ewatt
2

Où avez-vous trouvé les informations sur l' -Soption? Cela fait quelque chose de complètement différent! Il est utilisé pour le multiplexage et ControlPath.

SSH n'acceptera pas les mots de passe sur stdin jamais , vous devez préinstaller clés autorisées dans votre déploiement (de préférence) ou de l' utilisation sshpassou expectscript comme décrit dans de nombreuses autres questions.

Jakuje
la source
Merde tu as raison! Je viens de réaliser que le -Sdrapeau vient de sudo: S
2grit
Si je veux installer mes clés sur 100 hôtes, en utilisant ssh-copy-id, étant donné que tous les hôtes ont déjà un nom d'utilisateur et un mot de passe par défaut, comment éviter que ssh-copy-id me demande à chaque fois le même mot de passe?
realtebo
Cela est déjà répondu dans les deux réponses - utilisez sshpass si vous devez ou certains attendent un script.
Jakuje