Frage Stoppen Sie, dass der ssh-Client alle öffentlichen Schlüssel anbietet, die er finden kann?


Wie die meisten Systemadministratoren benutze ich openssh die ganze Zeit. Ich habe ungefähr ein Dutzend ssh Schlüssel, ich mag einen unterschiedlichen ssh Schlüssel für jeden Wirt haben. Dies verursacht jedoch ein Problem, wenn ich zum ersten Mal eine Verbindung mit einem Host herstelle, und alles, was ich habe, ist ein Passwort. Ich möchte nur eine Verbindung zum Host mit einem Passwort, in diesem Fall kein SSH-Schlüssel. Der ssh Client wird jedoch alle öffentlichen Schlüssel in meinem anbieten ~/.ssh/ (Ich weiß das, wenn ich den Output von ssh -v). Da ich so viele habe, werde ich für zu viele Authentifizierungsfehler getrennt.

Gibt es eine Möglichkeit, meinem ssh-Client mitzuteilen, dass er nicht alle ssh-Schlüssel anbietet?


21
2018-05-08 16:58


Ursprung


Warum sollten Sie für jeden Host einen anderen Schlüssel wünschen? Schlüssel können auch auf Hosts innerhalb einer einzelnen Verwaltungsdomäne gemeinsam genutzt werden. Offensichtlich würden Sie einen Schlüssel für Ihre Arbeitsmaschinen und einen anderen für Ihre privaten Maschinen verwenden, aber was ist die Logik hinter der Verwendung eines separaten Schlüssels für jede Maschine bei der Arbeit? - Alex Holst
@AlexHolst Ich benutze viele Schlüssel. Ich habe eine Standard-Verschlüsselung (für die ich ein Passwort eingeben muss) für die interne Infrastruktur. Ich habe einen anderen nicht verschlüsselt (ohne ein Passwort), den ich für einen bestimmten Dienst verwende, wo ich einen Agenten nicht verwenden konnte noch jede Minute das Kennwort eingeben wollte. Ich habe andere für Verbindungen, die nicht Teil unserer internen Infrastruktur sind. Es ist eine gute Übung, denn obwohl es ziemlich schwierig für jemanden sein sollte, den privaten Schlüssel vom öffentlichen Schlüssel wiederherzustellen, kann es getan werden. z.B. der Debian-openssh-Fehler vor einigen Jahren ... - Huygens
@Huygens Ich würde gerne Ihr Risikoanalysedokument sehen, das zu der Schlussfolgerung führte, dass Sie mehrere SSH-Schlüssel verwenden müssen, aber ein klarer Textschlüssel ist in Ordnung. Kannst du einen Link posten? - Alex Holst
@AlexHolst du musst nicht so "direkt" sein. Zuallererst ging es um die Gründe für das Vorhandensein mehrerer Schlüsselpaare. Ich glaube, ich habe dir mehrere gegeben. Danach müssen wir alle mit Macken umgehen und was nicht. Ich habe ein Testsystem, für das ich keine App verwenden kann, die Daten über SSH tunnelt, ohne ständig nach dem Schlüsselpasswort gefragt zu werden, wodurch die Software nicht verwendbar ist. Es scheint ein Fehler aufgrund von Versionsinkompatibilität oder was nicht. Ich erhalte eine E-Mail-Benachrichtigung für jede SSH-Anmeldung, und ich bin der einzige, der sich an dieser Box anmeldet. Also ist das Risiko akzeptabel. - Huygens


Antworten:


Dies ist das erwartete Verhalten gemäß der Manpage von ssh_config:

 IdentityFile
         Specifies a file from which the user's DSA, ECDSA or DSA authentica‐
         tion identity is read.  The default is ~/.ssh/identity for protocol
         version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for
         protocol version 2.  Additionally, any identities represented by the
         authentication agent will be used for authentication.  

         [...]

         It is possible to have multiple identity files specified in configu‐
         ration files; all these identities will be tried in sequence.  Mul‐
         tiple IdentityFile directives will add to the list of identities
         tried (this behaviour differs from that of other configuration
         directives).

Grundsätzlich spezifizieren IdentityFiles fügt nur Schlüssel zu einer aktuellen Liste hinzu, die der SSH-Agent dem Client bereits präsentiert hat.

Versuchen Sie, dieses Verhalten im unteren Bereich Ihres Browsers zu überschreiben .ssh/config Datei:

Host *
  IdentitiesOnly yes

Sie können diese Einstellung auch auf der Host-Ebene überschreiben, z.

Host foo
  User bar
  IdentityFile /path/to/key
  IdentitiesOnly yes

25
2018-06-12 10:19



Sie können auch verwenden ssh -o "IdentitiesOnly true" -v -A user@host das ist, was ich benutze, um mich an einem Rechner anzumelden, der keinen meiner Schlüssel hat, aber ich möchte Agent-Weiterleitung anbieten, um weiterzumachen. (-v für ausführliches Debugging). - eckes


Obwohl andere dies mit konfigurationsbasierten Lösungen angedeutet haben, ist es wahrscheinlich wert, darauf hinzuweisen, dass Sie dies in der Befehlszeile einfach mit nur einem Befehl ausführen können:

ssh -o 'PubkeyAuthentication no' myhostname.mydomain

30
2017-08-27 22:57



Perfekt .. DIE Lösung IMHO - drAlberT
Richtig, das sollte die akzeptierte Antwort sein. - J. M. Becker


Nach der Lösung von James Sneeringer möchten Sie vielleicht einfach eine ssh_config in folgenden Zeilen setzen:

Host *.mycompany.com
  IdentityFile .ssh/id_dsa_mycompany_main

Host *.mycustomer.com
  IdentityFile .ssh/id_dsa_mycustomer

Host *
  RSAAuthentication no #this should be up top, avoid ssh1 at all costs
  PubkeyAuthentication no

Wenn Sie eine Verbindung mit einem bestimmten Schlüssel zu vielen Computern herstellen, die sich nicht in einer gemeinsamen Domäne befinden, sollten Sie in Erwägung ziehen, ihnen alle CNAMEs in Ihrem eigenen DNS zuzuweisen. Ich mache das mit allen Kundensystemen.


11
2018-05-08 18:41





Ähnlich der Lösung von user23413 können Sie die Authentifizierung mit öffentlichen Schlüsseln für einen bestimmten Host (oder ein Platzhaltermuster) vollständig deaktivieren:

Host *.example.org
RSAAuthentication no        # SSHv1
PubkeyAuthentication no     # SSHv2

2
2018-05-08 18:20





Wenn Sie mit ssh -i / path / to / key auf eine bestimmte Schlüsseldatei verweisen, wird diese nur dann verwendet, wenn andere in den Agenten geladen wurden, und Sie werden nicht zur Eingabe des Kennworts aufgefordert. Sie können auch ~ / .ssh / config bearbeiten und so etwas anzeigen ...

Gastgeber foo.example.com
IdentityFile .ssh / id_rsa_foo.example.com

Sie können auch tun ...

Host * .beispiel.de
Identitätsdatei .ssh / id_rsa_example.org


-1
2018-05-08 17:45



Das fügt nur den Zielschlüssel zum Ende der Liste hinzu, der das Problem nicht löst. IdentitiesOnly nur mit diesem Willen. - Jo Rhett