Aceitar automaticamente a impressão digital da chave rsa na linha de comando

15

Tentei yes | ssh [email protected]aceitar a impressão digital da chave RSA, mas ainda sou solicitado se tenho certeza de que quero me conectar. Existe uma maneira de tornar isso automático?

VenomFangs
fonte

Respostas:

8

Adicione-os ao seu arquivo de inicialização do bash ou similar:

 #
 #  ssh + scp without storing or prompting for keys.
 #
 function sshtmp
 {
     ssh -o "ConnectTimeout 3" \
         -o "StrictHostKeyChecking no" \
         -o "UserKnownHostsFile /dev/null" \
              "$@"
 }
 function scptmp
 {
     exec scp -o "ConnectTimeout 3" \
         -o "StrictHostKeyChecking no" \
         -o "UserKnownHostsFile /dev/null" \
         "$@"
 }

Em seguida sshtmp, use , ou scptmpno lugar de sshe scp.

OBSERVAÇÃO Se você seguir esse caminho, não será alertado de que a chave do host foi alterada e perderá a segurança.


fonte
4
Graças ssh -o "StrictHostKeyChecking no" [email protected]trabalhou para mim
VenomFangs
16
como é esta a resposta? A questão era aceitar as chaves automaticamente, não ignorá-las! Se isso for perguntado e respondido aqui, como encontrar uma resposta para a pergunta real "Aceitar chaves automaticamente"? Odeio fazer um voto negativo, mas vamos lá pessoal, não é assim que a troca de pilhas deve ser!
JohnnyB
@JohnnyB dê uma olhada na minha resposta. Não é a solução mais limpa, mas na verdade permite que a chave seja aceita automaticamente
RDP
13

O OpenSSH 7.6 introduziu uma nova StrictHostKeyChecking=accept-newconfiguração exatamente para esse fim:

ssh(1): expand the StrictHostKeyChecking option with two new
   settings. The first "accept-new" will automatically accept
   hitherto-unseen keys but will refuse connections for changed or
   invalid hostkeys. This is a safer subset of the current behaviour
   of StrictHostKeyChecking=no. The second setting "n", is a synonym
   for the current behaviour of StrictHostKeyChecking=no: accept new
   host keys, and continue connection for hosts with incorrect
   hostkeys. A future release will change the meaning of
   StrictHostKeyChecking=no to the behaviour of "accept-new".

( Notas da versão do OpenSSH 7.6 )

Klas Š.
fonte
10

Usando SSH programaticamente com chave de hosts conhecidos

Se o que você quer é ser capaz de usar programaticamente e evitar ataque man-in-the-middle , então eu sugiro que você começa a impressão digital conhecido usando o comando ssh-keyscan. Exemplo:

$ ssh-keyscan -t rsa,dsa github.com 2>/dev/null
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==
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ==

Em seguida, você pode forjar um script para salvá-lo em um arquivo temporário e usar a UserKnownHostsFileopção O exemplo abaixo é um script, que pode ser chamado ssh_github:

#!/bin/bash

HOSTKEY='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==
github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+                                                                                                                                      PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+    2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=='

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

ssh -o "UserKnownHostsFile $TEMPFILE" $@

rm $TEMPFILE

Com isso, você pode simplesmente executar em ssh_githubvez de sshe ele se conectará mesmo se não houver known_hostsarquivo no qual você colocar o script.

RDP
fonte
0

Eu apenas uso: 'ssh -o StrictHostKeyChecking = sem usuário @ host', ele também pode ser usado com pssh: 'pssh -O StrictHostKeyChecking = sem -h list.text -l usuário -A -i "cmd"'

Saudações,

Diego Souza
fonte
Isso funcionou para mim, há uma razão pela qual foi votado para baixo? Também requer o OpenSSH 7.6+
Xenocide8998 /
-3

Você pode usar a -yopção: ou seja, tentar

ssh -y [email protected]

-y Sempre aceite a chave do host remoto se desconhecido

user392897
fonte
Bem-vindo à falha do servidor! Use Markdown e / ou as opções de formatação no menu de edição para definir corretamente suas postagens e melhorar sua legibilidade. É convenção formatar comandos como " code".
HBruijn
Estranho, mas no homem vejo o seguinte - #-y Send log information using the syslog system module. By default this information is sent to stderr.
ALex_hha #
Eu vejo o mesmo no homem.
Király István
essa não é uma opção ssh válida? De onde você copiou / colou isso?
Flo Woo
2
Esta opção existe apenas no dropbear SSH, não no OpenSSH.
Jeremy Visser