SSH-Befehlszeile Geben Sie den Fingerabdruck des Server-Hostschlüssels an

15

Mit sshBefehlszeile (OpenSSH), kann ich die Server-Host - Schlüssel Fingerabdruck angeben?

Dies ist mit winscp.com möglich, wenn (z. -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Ich habe die Manpage ein paar Mal gelesen, ich entschuldige mich, wenn ich das Offensichtliche dort verpasst habe.

Ich möchte nicht einfach einen Hostschlüssel automatisch akzeptieren, und ich möchte nicht, dass der Benutzer seinen aktualisiert known_hosts, sondern den Hostschlüssel in irgendeiner Form in der Befehlszeile angibt.

payo
quelle
-o UserKnownHostsFile funktioniert möglicherweise mit einer temporären Datei.
Payo

Antworten:

16

In OpenSSH gibt es keine Befehlszeilenoption zum Übergeben eines Hostschlüssel-Fingerabdrucks.

Sie können jedoch eine temporäre Datei (mit demselben Format wie die known_hosts) verwenden und die folgende sshverwenden -o UserKnownHostsFile:

ssh -o "UserKnownHostsFile my_temp_known_host" host.example.com

Siehe die Manpages ssh(für -o) und ssh_config(für UserKnownHostsFile).


Sie können auch die Verwendung von in Betracht ziehen StrictHostKeyChecking yes.


Wie unter Automatisch Akzeptieren des rsa-Schlüsselfingerabdrucks über die Befehlszeile vorgeschlagen , können Sie ein kleines Skript schreiben, mit dem Sie Folgendes erreichen können:

#!/bin/bash

TEMPFILE=$(mktemp)
echo "$1" > $TEMPFILE

ssh -o "UserKnownHostsFile $TEMPFILE" ${@:2}

rm $TEMPFILE

Wenn Sie das Skript aufrufen ssh_known_host, können Sie es verwenden und den Schlüssel als erstes Argument übergeben:

ssh_known_host 'github.com ssh-dss AAAAB3NzaC1kc3MAAACBANGFW2P9xlGU3zWrymJgI/lKo//ZW2WfVtmbsUZJ5uyKArtlQOT2+WRhcg4979aFxgKdcsqAYW3/LS1T2km3jYW/vr4Uzn+dXWODVk5VlUiZ1HFOHf6s6ITcZvjvdbp6ZbpM+DuJT7Bw+h5Fx8Qt8I16oCZYmAPJRtu46o9C2zk1AAAAFQC4gdFGcSbp5Gr0Wd5Ay/jtcldMewAAAIATTgn4sY4Nem/FQE+XJlyUQptPWMem5fwOcWtSXiTKaaN0lkk2p2snz+EJvAGXGq9dTSWHyLJSM2W6ZdQDqWJ1k+cL8CARAqL+UMwF84CR0m3hj+wtVGD/J4G5kW2DBAf4/bqzP4469lT+dF2FRQ2L9JKXrCWcnhMtJUvua8dvnwAAAIB6C4nQfAA7x8oLta6tT+oCk2WQcydNsyugE8vLrHlogoWEicla6cWPk7oXSspbzUcfkjN3Qa6e74PhRkc7JdSdAlFzU3m7LMkXo1MHgkqNX8glxWNVqBSc0YRdbFdTkL0C6gtpklilhvuHQCdbgB3LBAikcRkDp+FCVkUgPC/7Rw==' [email protected]
Martin Prikryl
quelle
Irgendein Hinweis, warum -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")nicht funktioniert?
Kasperd
2
@kasperd Möglicherweise, weil das von erstellte fd <()nur einmal gelesen werden kann, während sshdie Datei wiederholt gelesen wird .
Martin Prikryl
Vielen Dank für Ihre Antwort und Ihren Rat mit StrictHostKeyChecking. Diese Lösung wird für mich funktionieren.
Payo
1
Ich habe vergessen zu erwähnen, dass die
RDP