Wird sowohl auf meinem Mobilgerät als auch auf Raspberry Pi (zufälligerweise AArch- und ARM-CPUs) ssh-agent
nicht standardmäßig geladen.
Ich muss zuerst Folgendes starten ssh-agent
:
eval `ssh-agent -s`
Anschließend füge ich den Schlüssel zum Agenten hinzu:
ssh-add /home/jimjamz/.ssh/myKey
Ich werde nach einem Passwort gefragt und gebe es ein. Anschließend wird der Schlüssel dem Agenten hinzugefügt:
Enter passphrase for /home/jimjamz/.ssh/myKey:
Identity added: /home/jimjamz/.ssh/myKey (/home/jimjamz/.ssh/myKey)
Ich kann mich dann mit meinem Remote-Server verbinden, ohne meinen Schlüssel erneut angeben zu müssen.
Der Einfachheit halber möchte ich das Obige zu einem Skript hinzufügen, das den Agenten startet und den Schlüssel hinzufügt:
#!/bin/bash
eval `ssh-agent -s`
ssh-add /home/jimjamz/.ssh/myKey
Wenn ich das Skript ausführe, sehe ich, dass der Agentenprozess gestartet wurde, und werde nach dem Kennwort für meinen privaten Schlüssel gefragt. Ich gebe es korrekt ein, und der Schlüssel wird dem Agenten hinzugefügt.
Wenn ich jedoch versuche, per SSH auf meinen Remote-Server zuzugreifen, wird Folgendes angezeigt:
Permission denied (publickey).
Das Problem scheint beim Aufruf ssh-add
innerhalb meines Bash-Skripts zu liegen. Wenn ich ssh-add
außerhalb des Skripts manuell aufrufe und dann versuche, per SSH auf meinen Remote-Server zuzugreifen, kann ich eine Verbindung herstellen.
Warum wird nicht erkannt, dass der Schlüssel bereits hinzugefügt wurde, wenn ssh-add
es in einem Bash-Skript aufgerufen wird?
Wenn ich das Bash-Skript auf einem meiner anderen Rechner ausführe (auf dem der SSH-Agent bereits standardmäßig geladen ist), kann der im Skript hinzugefügte Schlüssel erfolgreich verwendet werden, um per SSH auf einen Remote-Server zuzugreifen. Es scheint nur auf Geräten nicht zu funktionieren, auf denen der SSH-Agent nicht automatisch standardmäßig ausgeführt wird.