Schlüsselbund installieren und manuell ausführen

Schlüsselbund installieren und manuell ausführen

Ich möchte meinen durch eine Passphrase geschützten SSH-Schlüssel verwenden, wenn ich Aufgaben mit parallel-ssh(und verwandten Tools) ausführe. Ich bekomme das jedoch nicht zum Laufen.

Aus der gesamten Dokumentation bezüglich parallel-sshgeht hervor, dass ich in der Lage sein sollte, Folgendes zu verwenden --askpassoder -Azu tun:

-A
--askpass
      Prompt  for  a  password  and pass it to ssh.  The password may be 
      used for either to unlock a key or for password authentication.  The 
      password is transferred in a fairly secure manner (e.g., it will not 
      show up in argument lists).  However, be aware that a root user on 
      your system could potentially intercept the password.

Wenn ich jedoch die Passphrase meines Schlüssels eingebe, funktioniert es nicht:

$ parallel-ssh --hosts=machines --user=my_user --askpass \
    --timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).

Ich habe bestätigt, dass mein SSH-Schlüssel und meine Passphrase auf allen Maschinen funktionieren, daher habe ich keine Ahnung, wie ich das zum Laufen bekomme.

Antwort1

Vorausgesetzt, dass parallel-sshund psshgleichwertig sind, sollte Ihr Versuch mit der Weiterleitung der Passphrase über den -ASwitch problemlos funktionieren.

Beispiel

Hier ist ein Beispiel, bei dem ich eine Verbindung zu zwei verschiedenen Systemen herstelle, host1und host2. Ich verwende den -lSwitch, um pssheinen Standardbenutzer von anzugeben root. Auf überschreibe ich dies jedoch host2im -HSwitch, indem ich den Hostnamen als angebe user1@host2.

$ pssh -A -i -H "host1 user1@host2" -l root 'echo "hi"'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 21:38:00 [SUCCESS] user1@host2
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

X11 forwarding request failed on channel 1
Killed by signal 1.
[2] 21:38:00 [SUCCESS] host1
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

ControlSocket /home/user1/.ssh/[email protected]:22 already exists, disabling multiplexing
X11 forwarding request failed on channel 0
Killed by signal 1.

Wenn das oben genannte funktioniert, werden Sie die Ausgabe des von mir ausgeführten Befehls sehen echo "hi".

Ihr Anliegen

Das Problem, das Sie mit einer Passphrase für Ihr SSH-Schlüsselpaar haben, ist auf einen Fehler zurückzuführen. Dies ist der Fehler mit dem Titel:Problem 80: Passphrase nicht weitergegeben?. Der vierte Kommentar zu diesem Problem zeigt einen Patch:

Auszug

#4[email geschützt]

Ich habe die Zeile geändert in

  if not ( prompt.strip().lower().endswith('password:') or 
        'enter passphrase for key' in prompt.strip().lower()):

und es scheint zu funktionieren

Verweise

Antwort2

Ich habe es geschafft, dies zum Laufen zu bringen, indem ich das installierte, keychainanstatt es manuell zu patchenInsektverursacht meine Probleme.

Schlüsselbund installieren und manuell ausführen

# install keychain package
$ sudo apt-get install keychain

# add my key to the keychain, entering passphrase when asked
$ keychain ~/.ssh/id_rsa

# source the file generated by the above command
$ . ~/.keychain/$(uname -n)-sh

Befehl ohne Eingabe von Passwort/Passphrase ausführen

Dieses Mal brauche ich meine Passphrase beim Anrufen nicht parallel-ssh, da der Schlüsselbund die Authentifizierung übernimmt:

$ parallel-ssh --hosts=machines --user=my_user --timeout=0 'sudo apt-get update'
[1] 14:52:15 [SUCCESS] amritiii 
[2] 14:52:17 [SUCCESS] odin
[3] 14:52:25 [SUCCESS] gmod
[4] 14:53:11 [SUCCESS] bioserver
[5] 14:53:14 [SUCCESS] thor
[6] 14:53:14 [SUCCESS] apollo
[7] 14:53:16 [SUCCESS] gbdev
[8] 14:53:17 [SUCCESS] code
[9] 14:53:18 [SUCCESS] hathor
[10] 14:53:34 [SUCCESS] ldap

Schlüsselbund beim Anmelden ausführen

Anstatt Ihren Schlüssel manuell ausführen und zum Schlüsselbund hinzufügen zu müssen, fügen Sie einfach Folgendes am Ende Ihres hinzu ~/.bash_profile:

$ keychain --clear $HOME/.ssh/id_rsa
$ . $HOME/.keychain/$(uname -n)-sh

Dadurch wird sichergestellt, dass Sie bei Ihrer ersten Anmeldung nach einem Neustart nach der Passphrase Ihres Schlüssels gefragt werden. Ihr Schlüssel bleibt dann bis zum nächsten Neustart im Schlüsselbund, oder Sie löschen den Schlüsselbund manuell.

Cron Jobs Verwendung des Schlüsselbundes

Wenn Sie das oben genannte in Ihre ~/.bash_profileDatei eingegeben haben, können Sie die Tatsache, dass Ihr Schlüssel jetzt im Schlüsselbund gespeichert ist, ausnutzen, indem Sie dieselbe Datei vor dem Ausführen Ihres Cronjobs sauer machen. Ich habe beispielsweise ein Backup-Skript, das jede Nacht um 21:00 Uhr ausgeführt wird und Sachen per SSH auf einen Remote-Computer kopiert. Dies ist ein Eintrag in meiner Crontab ( crontab -e):

 0 21 * * * . $HOME/.keychain/$(uname -n)-sh; $HOME/backup_script.sh

Antwort3

Verwenden Sie dieSSH-Agentautomatisch authentifizieren (mit einem Shell-Namen als Argument, damit die Agent-Umgebungsvariablen in dieser neuen Shell gesetzt werden). Fügen Sie den Schlüssel mitssh-hinzufügenund geben Sie Ihr Passwort nur einmal ein.

$ ssh-agent bash
$ ssh-add
Enter passphrase for /xxxx/.ssh/identity: 
$ 
$ pssh ...

verwandte Informationen