Gibt es eine Möglichkeit, den Schlüssel an der SSH-Pipe weiterzuleiten, ohne diesen Schlüssel tatsächlich auf der Maschine B zu speichern und dort zu lassen?
Der Schlüssel verlässt niemals Ihren lokalen Rechner. Mit dieser -A
Option können nur Clients auf hostB und hostC Anforderungen zum Signieren von Daten an Ihren lokalen ssh-agent senden . (Die SSH-Authentifizierung funktioniert mit Ihrem Schlüsselpaar, um digitale Signaturen zu erstellen.)
(Technisch gesehen können sie jeden ssh-agent-Befehl senden, einschließlich "list keys" oder "add new key". Es gibt jedoch keinen Befehl zum Extrahieren des privaten Schlüssels oder anderer vertraulicher Informationen.)
Wenn hostB jedoch nicht absolut vertrauenswürdig ist (und Sie nicht möchten, dass Authentifizierungsanfragen übermittelt werden), verwenden Sie einen anderen Ansatz: Führen Sie den zweiten Client lokal aus und leiten Sie das SSH-Protokoll über die SSH-Pipe weiter. Auf diese Weise sehen Zwischen-Hosts nur eine verschlüsselte Konversation.
Die einfachste Methode (in OpenSSH 7.3 und höher) ist die Option ProxyJump:
ssh -J user@hostB user@hostC
Andere Optionen sind -o ProxyCommand="ssh -W %h:%p user@hostB"
oder statische TCP-Tunnel über -L
.