Auf der Serverseite

Auf der Serverseite

sshClients (standardmäßig, zumindest in Ubuntu 18.04 und FreeBSD 12) prüfen immer, ob der Schlüsselfingerabdruck des Servers in der known_hostsDatei enthalten ist.

Ich habe einen Host im LAN, der Dual-Boot hat; beide Betriebssysteme verwenden dieselbe statische IP. Ich möchte eine Verbindung herstellen sshzubeidevon ihnen, ohne dass Fehler auftreten.

Dies verstößt offensichtlich gegen die durchgeführten Prüfungen known_hosts: Wenn ich einen Fingerabdruck akzeptiere, wird er mit der Host-IP in Verbindung gebracht; wenn das Betriebssystem gewechselt wird, ändert sich der Fingerabdruck, während die IP gleich bleibt, und ich muss ihn manuell löschen, known_hostsbevor ich mich wieder verbinden kann. Ich hätte gerne diesen einen Fingerabdruck,oderdas andere wird akzeptiert, wenn man dieses geistige Eigentum berücksichtigt.

Gibt es einClient-SeiteLösung zur Behebung dieses Problems?

Ich verwende OpenSSH_7.8p1, OpenSSL 1.1.1a-freebsd 20 Nov 2018und OpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017.

Notiz: Ich möchte keine „Keine Überprüfung“ des Fingerabdrucks des Servers. Ich frage mich nur, ob es möglich ist, zwei alternative Fingerabdrücke (nicht nur einen) der IP-Adresse des Servers zuzuordnen.

Antwort1

Ihr Problem ist, dass Hostschlüssel genau das sind, nämlich Schlüssel für den Host. Es soll eigentlich nur einen pro Host geben. Natürlich gibt es mehrere, weil es mehrere Schlüsseltypen gibt, aber ich würde es vermeiden, mich darauf zu verlassen, dass Schlüsseltypen Ihnen mehrere akzeptable Schlüssel für einen einzelnen Host geben.

Auf der Serverseite

Mein erster Vorschlag ist, dass Sie sorgfältig überlegen, ob Sie dies wirklich auf der Clientseite tun möchten. Sie könnten diese beiden Betriebssysteme als denselben Host behandeln und einfach den Hostschlüssel von einem zum anderen kopieren.

Wenn Sie diese von OpenSSH kopieren, /etc/ssh/ssh_host*können Sie sie auf anderen Betriebssystemen verwenden. Allerdings müssen sie je nach verwendetem SSH-Server möglicherweise neu formatiert werden.


Aber ...

Darf ich fragen, warum Sie serverseitige Lösungen ausgeschlossen haben? Wäre es nicht am einfachsten, wenn Sie versuchen würden, beide Betriebssysteme dazu zu bringen, denselben Hostschlüssel zu verwenden? – Philip Couling

@PhilipCouling Teilweise wegen der Benutzerfreundlichkeit: eines der Betriebssysteme ist Windows. Teilweise, um keine Schlüssel von einem Host auf einen anderen zu übertragen, was manchmal nicht empfohlen wird. Aber der Hauptgrund ist: Ich möchte ein gewisses Maß an Flexibilität bei der SSH-Client-Konfiguration erreichen, wenn das möglich ist. – BowPark

Ich glaube, Sie suchen nach einer Möglichkeit, die beiden Betriebssysteme als unterschiedliche Hosts zu behandeln, obwohl sie dieselbe IP-Adresse und Portnummer haben.


Auf der Clientseite

Der wahrscheinlich zuverlässigste Weg ist, für jedes Betriebssystem eine hostspezifische Konfiguration festzulegen. Bearbeiten (oder erstellen) Sie Folgendes, ~/.ssh/configum Folgendes hinzuzufügen:

Host windows.dualbootbox
    Hostname 192.168.10.20
    UserKnownHostsFile ~/.ssh/windows.dualbootbox.known_hosts

Host ubuntu.dualbootbox
    Hostname 192.168.10.20
    UserKnownHostsFile ~/.ssh/ubuntu.dualbootbox.known_hosts

Sie müssen nicht angeben, Hostnameob jedes Hostbereits in eine IP aufgelöst wird. Sieheman ssh_configfür weitere Konfigurationsoptionen.

Mit der obigen Konfiguration können Sie dann entweder:

ssh [email protected]
ssh [email protected]

Antwort2

Es gibt hierfür mehrere Möglichkeiten. Eine davon ist die Verwendung StrictHostKeyChecking nowährend der SSH-Verbindung zu Ihren Hosts. Dadurch werden keine Einträge in known_hosts erstellt.

ssh -o StrictHostKeyChecking=no <ip>

Oder

ssh -o UserKnownHostsFile=/dev/null <ip>

Oder Sie können Ihre .ssh/config-Datei nach Bedarf ändern.

verwandte Informationen