Openssh in VM-Authentifizierung mithilfe von Pageant auf dem Host

Openssh in VM-Authentifizierung mithilfe von Pageant auf dem Host

Aktualisieren: Es sieht so aus, als wäre das Netzwerkdesign völlig falsch gewesen und der Authentifizierungsfluss sollte stattdessen umgekehrt sein. Daher ist diese Frage jetzt hinfällig.


Aktuelles Setup: Linux-VM (vermutlich gängige und aktuellste wie CentOS 7.1 und Ubuntu 15.04) auf einem Windows 7-Host unter Verwendung von Virtualbox.

TL;DR-Frage: Ist es möglich, OpenSSH in einer VM laufen zu lassen, umnichtlokalen SSH-Agenten für Schlüsselauthentifizierung verwenden, aber stattdessen Peagent auf Windows-Host verwenden? Komplexere Konfiguration ist akzeptabel.

lange Frage: Ursprünglich gibt es mehrere Kopien von Schlüsseln auf Host und VM – solche im Putty-Format auf Host und im OpenSSH-Schlüsselformat auf VMs über freigegebene Ordner, und viele davon sind aus praktischen Gründen nicht kennwortgeschützt. Aber in letzter Zeit habe ich das Bedürfnis verspürt, sie zu konsolidieren und mehr Schutz hinzuzufügen. Die Schlüssel sind für die Remote-Verwaltung und das Auschecken von Quellcode über Versionskontrollsysteme, hauptsächlich Git. Hier sind die Anforderungen:

  1. Der Windows-Host kann per SSH auf den Remote-Server zugreifen und Git über SSH verwenden.
  2. Die Linux-VM kann per SSH auf den Remote-Server zugreifen und Git über SSH verwenden.
  3. Schlüssel werden nur auf dem Host gespeichert, nicht auf VMs. (Das bedeutet, dass dies kein SSH-Agent-Weiterleitungs-Setup sein wird.)

Punkt 1 (Windows-Host erlauben, Pageant zur Authentifizierung zu verwenden) ist relativ trivial; die Einrichtung von Git beschränkt sich im Wesentlichen auf das Setzen der richtigen $GIT_SSHUmgebungsvariable. Nicht nur Putty, auch MinGW OpenSSH kann eine Verbindung zu Pageant herstellen, indem alle Schlüssel im Passwortmanager gespeichert werden (mit KeePass 2.x) und ein Socket exportiert wird, der für die Verwendung geeignet ist $SSH_AUTH_SOCK.KeeAgent-Plugin. Sehendieser ServerFault-Beitragfür einen anderen Ansatz.

Aber bisher habe ich keinen Erfolg beim Zugriff auf Pageant über eine Linux-VM. Ich habe den folgenden Ansatz versuchtaber scheiterte:

  • Der SSH-Server ist auf dem Windows-Host als Zwischen-Hop installiert (ich versucheMobasshaber die Wahl sollte keine Rolle spielen – lesen Sie weiter).
  • Versuchen Sie dann, die Remote-Ausführung innerhalb der VM durchzuführen plink.exe. Dies ähnelt dem naiven Ansatz ssh host1 ssh host2, der für meinen Zweck ausreichend ist.
  • Jedoch, plink.exe konnte beim Ausführen innerhalb eines Windows-SSH-Servers nicht auf einen Schlüssel zugreifen. Das direkte Ausführen von plink.exe cmdfunktioniert. Die meisten verfügbaren SSH-Server unter Windows basieren auf Cygwin. Sieht ziemlich ähnlich aus wie das hierFehlerbericht zur Putty/Cygwin-Kombination.

Notiz:Eine möglicherweise ähnliche Frage hier, aber ich verwende Vagrant nicht.

Antwort1

Es scheint, dass das ursprüngliche Design völlig falsch war. Es wäre viel sauberer, den SSHD-Server auf jeder virtuellen Maschine einzuschalten mit

AllowAgentForwarding yes

Und dann per SSH in jede VM. Auf diese Weise würden alle VMs automatisch den Authentifizierungsagenten vom Host verwenden, ohne dass ein SSH-Schlüssel installiert sein müsste.

verwandte Informationen