linha de comando ssh especificar impressão digital da chave do host do servidor

15

Usando a sshlinha de comando (OpenSSH), posso especificar a impressão digital da chave do host do servidor?

Isso é possível com winscp.com usando (por exemplo) -hostkey="ssh-rsa 2048 AA:BB:CC...etc

Eu li a página do manual algumas vezes, peço desculpas se perdi o óbvio lá.

Não quero apenas aceitar automaticamente uma chave do host e não quero exigir que o usuário atualize a chave known_hosts, mas especifique a chave do host de alguma forma na linha de comando.

payo
fonte
-o UserKnownHostsFile pode funcionar com um arquivo temporário.
payo

Respostas:

16

Não há opção de linha de comando no OpenSSH para passar uma impressão digital da chave do host.

Embora você possa usar um arquivo temporário (com o mesmo formato que o known_hosts) e sshutilizá-lo usando -o UserKnownHostsFile:

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

Consulte as páginas de manual ssh(para o -o) e ssh_config(para o UserKnownHostsFile).


Você também pode considerar usar o StrictHostKeyChecking yes.


Conforme sugerido em Aceitar automaticamente a impressão digital da chave rsa na linha de comando , você pode escrever um pequeno script que permita isso:

#!/bin/bash

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

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

rm $TEMPFILE

Se você chamar o script ssh_known_host, poderá usá-lo, passando a chave como o primeiro argumento:

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
fonte
Alguma pista por -o UserKnownHostsFile=<(echo "hostname ssh-rsa ...")que não funciona?
kasperd
2
@kasperd Possivelmente porque o fd criado por <()pode ser lido apenas uma vez, enquanto sshlê o arquivo repetidamente.
Martin Prikryl
obrigado por sua resposta e conselhos usando StrictHostKeyChecking. Esta solução funcionará para mim.
30515
1
Esqueci de mencionar na edição que a solução de script evita o ataque man-in-the-middle
RDP