La riga di comando ssh specifica l'impronta digitale della chiave host del server


15

Utilizzando la sshriga di comando (OpenSSH), posso specificare l'impronta digitale della chiave host del server?

Questo è possibile con winscp.com usando (es.) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Ho letto la pagina man un paio di volte, mi scuso se ho perso l'ovvio lì.

Non voglio semplicemente accettare automaticamente una chiave host e non voglio richiedere all'utente di aggiornare la propria known_hosts, ma piuttosto specificare la chiave host in qualche forma sulla riga di comando.


-o UserKnownHostsFile potrebbe funzionare con un file temporaneo.
payo,

Risposte:


16

Non esiste alcuna opzione da riga di comando in OpenSSH per passare un'impronta digitale della chiave host.

Sebbene sia possibile utilizzare un file temporaneo (con lo stesso formato del known_hosts) e sshutilizzare l' uso di -o UserKnownHostsFile:

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

Vedi le pagine man ssh(per -o) e ssh_config(per UserKnownHostsFile).


Puoi anche prendere in considerazione l'uso di StrictHostKeyChecking yes.


Come suggerito su Auto accetta l'impronta digitale chiave rsa dalla riga di comando , è possibile scrivere un piccolo script che ti consenta di ottenere ciò:

#!/bin/bash

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

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

rm $TEMPFILE

Se chiami lo script ssh_known_host, puoi usarlo, passando la chiave come primo argomento:

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==' git@github.com

Qualche idea sul perché -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")non funziona?
Kasperd,

2
@kasperd Forse perché la fd creata da <()può essere letta una sola volta, mentre sshlegge il file ripetutamente.
Martin Prikryl,

grazie per la tua risposta e i tuoi consigli utilizzando StrictHostKeyChecking. Questa soluzione funzionerà per me.
payo,

1
Ho dimenticato di menzionare in modifica che la soluzione di script evita l'attacco man-in-the-middle
RDP
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.