sudo kann nicht auf den privaten Schlüssel zugreifen

sudo kann nicht auf den privaten Schlüssel zugreifen

Ich habe ein öffentliches und privates Schlüsselpaar, das ~/.sshfür die SSH-Verbindung zu GitHub verwendet wird.

Um zu testen, ob ich SSH mit GitHub richtig eingerichtet habe, habe ich verwendet , was einwandfrei funktioniert.ssh -T [email protected]

Auch wenn ich den obigen Befehl als Superuser ausführe, funktioniert es einwandfrei.

su
ssh -T [email protected]

Wenn ich jedoch sudo verwende, funktioniert der Befehl nicht. Ich vermute, dass er nicht auf das Schlüsselpaar zugreifen kann, das unter gespeichert ist, wenn er ~/.sshmit ausgeführt wirdsudo

Der folgende Befehl schlägt fehl.

sudo ssh -T [email protected]

Sie können das Problem problemlos mit jeder Ubuntu-Distribution reproduzieren undDasGitHub-Hilfeseite.

Bearbeiten:

Ich verstehe, dass ich den privaten Schlüssel sshwie folgt weitergeben kann:

ssh -i <path-to-private-key> -T [email protected]

Ich frage mich nur, warum der private Schlüssel durch die Verwendung unzugänglich wird.sudo ssh -T [email protected]

Antwort1

Hypothese: Für Ihren regulären Benutzer wird ein Authentifizierungsagent ausgeführt und der Agent besitzt den Schlüssel.

sshvon einer Shell ohne erhöhte Rechte erzeugt, erbt die entscheidende Umgebungsvariable SSH_AUTH_SOCK, die ihm den Speicherort des Sockets für die Kommunikation mit dem Agenten angibt. sshkann den Agenten verwenden. So verwenden Sie einen Agenten normalerweise.

suhebt die Variable nicht auf. sshafter sukann den Socket dank der Variable lokalisieren. Normalerweise kann auf den Socket nur der Besitzer zugreifen, aber jetzt sshläuft er als Root und Root kann auf (fast) jede Datei zugreifen, unabhängig von ihren Berechtigungen.

sudo tuthebt die Variable auf (standardmäßig; sieheDasUndDas). sshin sudo ssh …kann den Socket nicht finden. Es ist, als wäre der Agent nicht da. sshversucht, den richtigen privaten Schlüssel an einigen Standardspeicherorten in zu finden ~/.ssh, sucht jetzt aber im Stammverzeichnis und nicht im Stammverzeichnis Ihres normalen Benutzers, wo sich der richtige private Schlüssel befindet.

Antwort2

Sie können den Pfad zu Ihrer Identitätsdatei mit der Option -i an ssh übergeben.

ssh user@host -i /path/to/keyfile

verwandte Informationen