Senden Sie das Passwort über stdin in `ssh-copy-id`

11

Ich muss einige Identitätsbereitstellungen automatisieren, idealerweise mit ssh-copy-id.

Ich versuche, das Passwort über stdin anzugeben, was sshmit dem -SFlag möglich ist. Ich bin mir bewusst, dass ich zusätzliche Optionen zur sshVerwendung des -oFlags im ssh-copy-idBefehl senden kann, es gibt jedoch keine Verwendungsbeispiele für dieses Flag in der Manpage.

Also habe ich versucht, das SSH-Passwort für ssh-copy-idüber stdin zu übergeben, indem ich :

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

Aber alles was ich bekomme ist:

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

BEARBEITEN:

Ich versuche, das Passwort über stdin anzugeben, was sshmit dem -SFlag möglich ist.

Diese Aussage ist falsch. Ich habe diese Flagge tatsächlich vom sudoMenschen gelesen ;

2grit
quelle

Antworten:

15

Möglicherweise möchten Sie versuchen, sshpass zu installieren und Ihren Aufruf wie folgt zu ändern ssh-copy-id:

sshpass -p "$TMP_PASS" ssh-copy-id
dhag
quelle
lol, nicht auf dem Mac und wenn brew installversucht wird, erhalte ich "Fehler: Keine verfügbare Formel mit dem Namen" sshpass ". Wir werden sshpass nicht hinzufügen, da es für unerfahrene SSH-Benutzer zu einfach ist, die Sicherheit von SSH zu ruinieren."
Tofutim
Es gibt Anweisungen, um es mit Homebrew auf OSX hier zu installieren. Gist.github.com/arunoda/7790979#installing-with-homebrew Sie müssten nur laufenbrew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
ewatt
2

Wo haben Sie die Informationen zur -SOption gefunden? Es macht etwas ganz anderes! Es wird für Multiplexing und ControlPath verwendet.

SSH akzeptiert niemals Kennwörter auf stdin. Daher sollten Sie autorisierte Schlüssel in Ihrer Bereitstellung (bevorzugte Methode) vorinstallieren sshpassoder ein expectSkript verwenden, wie in vielen anderen Fragen beschrieben.

Jakuje
quelle
Verdammt du hast recht! Ich habe gerade festgestellt, dass die -SFlagge von sudo: S
2grit
Wenn ich meine Schlüssel mit ssh-copy-id auf 100 Hosts installieren möchte und alle Hosts bereits einen Standardbenutzernamen und ein Standardkennwort haben, wie kann ich vermeiden, dass ssh-copy-id mich jedes Mal nach demselben Kennwort fragt?
Realtebo
Das ist in beiden Antworten bereits beantwortet - verwenden Sie sshpass, wenn Sie ein Skript benötigen oder erwarten.
Jakuje