linux - for - ssh-keygen windows




Come rendere ssh-add read passphrase da un file? (2)

Sto cercando di aggiungere la chiave in ssh-agent e voglio ssh-add password di lettura dal file utilizzando. Com'è possibile?

Come automatizzo questo processo dallo script di shell?


A seconda della distribuzione e della versione di ssh-add, potresti essere in grado o non utilizzare l'opzione -p di ssh-add che legge la passphrase da stdin in questo modo:

cat passfile | ssh-add -p keyfile

Se questo non funziona, puoi utilizzare Expect , uno strumento Unix per rendere le applicazioni interattive non interattive. Dovrai installarlo dal tuo gestore di pacchetti.

Ho scritto uno strumento per te in attesa. Basta copiare il contenuto in un file chiamato ssh-add-pass e impostare le autorizzazioni eseguibili su di esso ( chmod +x ssh-add-pass ). Puoi anche copiarlo in / usr / bin o in / usr / local / bin per essere accessibile dalla ricerca $ PATH.

#!/bin/bash

if [ $# -ne 2 ] ; then
  echo "Usage: ssh-add-pass keyfile passfile"
  exit 1
fi

eval $(ssh-agent)
pass=$(cat $2)

expect << EOF
  spawn ssh-add $1
  expect "Enter passphrase"
  send "$pass\r"
  expect eof
EOF

L'utilizzo è semplicemente: ssh-add-pass keyfile passfile


Ecco qualche soluzione alternativa per i sistemi che non supportano -p :

$ PASS="my_passphrase"
$ install -vm700 <(echo "echo $PASS") "$PWD/ps.sh"
$ cat id_rsa | SSH_ASKPASS="$PWD/ps.sh" ssh-add - && rm -v "$PWD/ps.sh"

dove ps.sh è in pratica il tuo script che stampa la passphrase. Vedi: man ssh-add .

Per renderlo più sicuro (per non tenerlo nello stesso file), utilizzare mktemp per generare un file privato casuale, renderlo eseguibile ( chmod ) e assicurarsi che stampi la passphrase sullo standard output una volta eseguito.





ssh-agent