Ist es möglich, die Agentenweiterleitung zu verwenden, bei der alle Schlüssel von der Weiterleitung ausgeschlossen werden, mit Ausnahme der speziell angegebenen? Gibt es alternativ Möglichkeiten, die Reihenfolge anzugeben, in der die Schlüssel pro Sitzung ausprobiert werden?
Für die Verwendung ssh-agent
müssen verschiedene Sockets verwaltet werden: /superuser/357602/use-a-specified-key-from-ssh-agent/401737#comment396923_358604
Gibt es alternative Agenten, die einfacher zu konfigurieren sind?
Zum Beispiel:
Client A --> ssh/agent-forwarding --> Server B --> Server C
|
------> Server D
Ich möchte nur einen Schlüssel für die Agentenweiterleitung zulassen, und zwar: A -> B -> C
und nicht A -> B -> D
. Oder geben Sie zumindest die Reihenfolge an, in der die Schlüssel ausprobiert werden.
(Aus Gründen der Übersichtlichkeit nach der Antwort von @ jeff-ferland bearbeitet.)
Eine Funktion wie die angeforderte würde zum ssh-Client gehören.
Für den SSH-Agenten wäre es zu schwierig herauszufinden, wann er über eine Weiterleitung kommuniziert und wann er mit einem lokalen SSH-Client kommuniziert. Es wäre eine Sicherheitslücke, wenn der Server die Einschränkung anwenden würde. Damit bleibt der SSH-Client der einzige Ort, an dem eine solche Funktion vernünftigerweise existieren könnte.
Ein kurzer Blick durch die openssh-Quelle führte mich zur Funktion client_request_agent in clientloop.c. Von dem, was ich dort sehe, habe ich den Eindruck, dass der SSH-Client den Rohbyte-Stream einfach weiterleitet, ohne zu verstehen, welche Schlüssel verwendet werden. Dies bedeutet, dass das Hinzufügen dieser Funktion zum Client einen erheblichen Aufwand erfordern würde.
Eine weitere verwandte Funktion, die mit weniger Arbeit hinzugefügt werden könnte, wäre die Option, zwei verschiedene Agenten zu verwenden. Ein Agent kann zur Authentifizierung beim Server verwendet werden, während ein anderer Agent an den Server weitergeleitet werden kann.
Beides wären nützliche Funktionen, die ich ebenfalls nutzen würde, aber leider scheint es (noch) nicht in openssh zu geben.
quelle
Wenn dieses Problem ausschließlich bei der App-Bereitstellung mit verschiedenen privaten Repos auftritt, für die unterschiedliche Schlüssel erforderlich sind:
Sie können die Agentenweiterleitung insgesamt überspringen. Kopieren Sie die Dateien auf den Computer mit den verschiedenen Schlüsseln und synchronisieren Sie die geklonten Repos auf den Server, auf dem die Bereitstellung erfolgt.
Sie können den Prozess mit Alias, Shell-Skripten usw. automatisieren. In Capistrano ist dies sogar integriert. Dies wird als Kopierstrategie bezeichnet: http://rubydoc.info/github/capistrano/capistrano/master/Capistrano/Deploy/Strategy/Copy
quelle