Eu escrevi este pequeno script utilitário:
for h in $SERVER_LIST; do ssh $h "uptime"; done
Quando um novo servidor é adicionado $SERVER_LIST
, o script é parado com:
The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?
Eu tentei yes
:
for h in $SERVER_LIST; do yes | ssh $h "uptime"; done
sem sorte.
Existe uma maneira de parametrizar ssh
para aceitar automaticamente qualquer nova chave?
yes
gera "y", você pode ter tido mais sorte com issofor h in $SERVER_LIST; do yes yes | ssh $h "uptime"; done
(observe o extra sim, que diz sim o que dizer em vez de "y ").Respostas:
Use a opção StrictHostKeyChecking, por exemplo:
Esta opção também pode ser adicionada ao ~ / .ssh / config, por exemplo:
Observe que quando as chaves do host forem alteradas, você receberá um aviso, mesmo com esta opção:
Se seus hosts não forem reinstalados com frequência, você poderá torná-lo menos seguro (mas mais conveniente para as chaves de host que mudam frequentemente) com a
-oUserKnownHostsFile=/dev/null
opção Isso descarta todas as chaves de host recebidas, para nunca gerar o aviso.Com 18,04, há uma nova possibilidade:
StrictHostKeyChecking=accept-new
. Deman 5 ssh_config
:fonte
ssh-keyscan
é preferível, se estiver disponível no seu sistema.ssh-keyscan
abordagem é mais sensata. Para máquinas virtuais locais e outros hosts em redes confiáveis com endereços IP dinâmicos / reutilizados, a abordagem descrita é boa o suficiente.ssh-keyscan
solução só é propensa a um ataque man-in-the-middle no momento em quessh-keyscan
está sendo executada. A-oStrictHostKeyChecking=no
solução é propensa a um ataque do tipo intermediário toda vez quessh
é executada.Você pode usar o seguinte comando para adicionar a impressão digital de um servidor aos seus known_hosts
NOTA: Substitua <endereço IP> e <nome do host> pelos nomes IP e DNS do servidor que você deseja adicionar.
O único problema com isso é que você terminará com alguns servidores em seus_conhecidos_hosts duas vezes. Não é realmente um grande negócio, apenas mencionando. Para garantir que não haja duplicatas, você pode remover todos os servidores primeiro, executando o seguinte primeiro:
Então você pode executar:
Uma coisa a ter em mente ao remover apenas para adicionar novamente, você está essencialmente removendo a segurança de verificar a impressão digital. Portanto, você definitivamente não gostaria de executar esse script antes de cada execução do seu script de utilitário.
fonte
-H
hashes nomes e endereços de host.Estou um pouco atrasado com essa resposta, mas a maneira mais sensata seria fazer um scan ssh-keys na nova máquina antes de você executar a coleta de tempo de atividade.
Desativar a verificação de sanidade por conveniência parece um plano ruim, mesmo que você pense que está totalmente no controle do ambiente.
fonte
StrictHostKeyChecking no
Para adicionar uma lista de servidores automaticamente, podemos fazer abaixo:
Adicionar IP de servidores na lista de servidores de arquivos
Os IPs devem ser adicionados no formato abaixo.
Saída de
cat servers-list
Altere os IPs acima, substituindo o seu.
O comando abaixo adicionará todos os servidores da lista.
fonte