Responda sim em um script bash

18

Estou tentando fazer um git clone através de um script bash, mas a primeira vez que executo o script e o servidor ainda não é conhecido, o script falha. Eu tenho algo assim:

yes | git clone [email protected]:repo/repoo.git
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? 

Mas está ignorando o yes . Você sabe como forçar git clone a adicionar a chave aos hosts conhecidos?

    
por Rafael 16.08.2011 / 20:39

4 respostas

19

Adicione o seguinte ao seu arquivo ~/.ssh/config :

Host github.com
    StrictHostKeyChecking no

Qualquer coisa usando o cliente open-ssh para estabelecer um shell remoto (com o cliente git) deve pular as chaves para o github.com.

Esta é realmente uma má idéia, já que qualquer forma de pular as verificações (se você automaticamente bateu sim ou pula o cheque em primeiro lugar) cria espaço para um homem no compromisso de segurança média. Uma maneira melhor seria recuperar e validar a impressão digital e armazená-la no arquivo known_hosts antes de precisar executar algum script que se conecte automaticamente.

    
por 16.08.2011 / 20:50
5

yes outputs y . A aceitação de chave RSA precisa de yes . Você poderia tentar yes yes | git clone [email protected]:repo/repoo.git então yes outputs yes em vez de y .

    
por 16.08.2011 / 20:52
3

A execução de ssh-keyscan -H github.com >> ~/.ssh/known_hosts antes da clonagem adicionará a chave e impedirá a exibição do prompt.

Claro que esta abordagem também é vulnerável a um ataque MITM.

    
por 23.11.2016 / 16:59
1

Eu me deparei com esse problema antes. Embora estivesse em uma máquina Windows, mas precisávamos usar o ssh para se conectar a um host remoto. Nós nos deparamos com o mesmo problema que a primeira conexão sempre falhava porque não reconhecia as chaves.

Eu resolvi isso conectando-me manualmente e encontrando a chave de registro e importando-a no início do script. No Linux, deve ser a mesma idéia geral: você deseja adicionar este servidor a uma lista de hosts confiáveis para que o ssh não pergunte se você confia nele toda vez.

Depois de se conectar manualmente, encontre o arquivo de chave e adicione-o ao seu arquivo known_hosts. Dessa forma, o ssh examinará esse arquivo, presuma que você sabe o que está fazendo e prossegue sem perguntar sobre a impressão digital.

    
por 16.08.2011 / 21:04