wiersz polecenia ssh określa odcisk palca klucza hosta serwera

15

Czy za pomocą sshwiersza polecenia (OpenSSH) mogę określić odcisk palca klucza hosta serwera?

Jest to możliwe przy użyciu winscp.com przy użyciu (np.) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Parę razy przeczytałem stronę podręcznika, przepraszam, jeśli przeoczyłem oczywistość.

Nie chcę po prostu automatycznie akceptować klucza hosta i nie chcę wymagać od użytkownika aktualizacji jego known_hostsklucza, ale raczej podaj klucz hosta w jakiejś formie w wierszu polecenia.

payo
źródło
-o UserKnownHostsFile może działać z plikiem tymczasowym.
payo

Odpowiedzi:

16

W OpenSSH nie ma opcji wiersza polecenia do przekazania odcisku palca klucza hosta.

Chociaż możesz użyć pliku tymczasowego (w tym samym formacie co known_hosts) i sshużyć go przy użyciu -o UserKnownHostsFile:

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

Zobacz strony podręcznika ssh(dla -o) i ssh_config(dla UserKnownHostsFile).


Możesz także rozważyć użycie StrictHostKeyChecking yes.


Zgodnie z sugestią Auto zaakceptuj odcisk palca klucza rsa z wiersza poleceń , możesz napisać mały skrypt, który pozwoli ci to osiągnąć:

#!/bin/bash

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

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

rm $TEMPFILE

Jeśli wywołasz skrypt ssh_known_host, możesz go użyć, przekazując klucz jako pierwszy argument:

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
źródło
Wszelkie wskazówki, dlaczego -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")nie działa?
kasperd
2
@kasperd Prawdopodobnie dlatego, że utworzony przez fd <()można odczytać tylko raz, podczas sshgdy plik jest odczytywany wielokrotnie.
Martin Prikryl
dziękuję za odpowiedź i porady za pomocą StrictHostKeyChecking. To rozwiązanie będzie dla mnie działać.
payo
1
Podczas edycji zapomniałem wspomnieć, że rozwiązanie skryptu pozwala uniknąć ataku man-in-the-middle
RDP