O que pode fazer com que as alterações de .ssh / config sejam ignoradas

3

Eu tinha um arquivo ~/.ssh/config que estava funcionando bem. estava neste formato:

Host *
  IdentityFile ~/.ssh/id_null
  TCPKeepAlive no
  ServerAliveCountMax 5000
Host *.domain.com
  User mydomainuser
  IdentityFile ~/.ssh/id_domain
Host github.com
  User gcb
  IdentityFile ~/.ssh/id_domain

(tinha muito mais domínios, mas vamos ignorá-los por enquanto)

Ele estava funcionando perfeitamente, até mesmo o manual dizendo que os padrões de hosts mais específicos deveriam estar no topo, sempre funcionava bem assim. Eu sempre ssh'ed para esses dois domínios e as chaves de identidade corretas foram apanhados muito bem. Eu nunca tive um problema se a chave nula fosse tentada nesses dois domínios. E eu usei isso por anos. Sempre tem o usuário e a chave certos. Eu usei esse mesmo arquivo de configuração no debian, fedora e osx.

Hoje, no osx 10.10 (OpenSSH_6.2p2, OSSLShim 0.9.8r 8 de dezembro de 2011), que funcionou antes, tentei também adicionar User unkown à regra * na parte superior. e, de repente, agora cada ssh eu tento, ssh envia user = unkown e identityfile = id_null, que não loga em lugar algum. Isso me fez ir ler a página de manual do ssh_config e deixar tudo exatamente pelo livro ... e ainda não funcionará. Eu também tentei remover a entrada User de * , mas isso não corrigiu isso.

meu atual arquivo .ssh/config é

Host exact.hostname.domain.com
  User mydomainuser
  IdentityFile ~/.ssh/id_domain
Host *.domain.com
  User mydomainuser
  IdentityFile ~/.ssh/id_domain
Host github.com
  User gcb
  IdentityFile ~/.ssh/id_domain
Host *
  IdentityFile ~/.ssh/id_null
  TCPKeepAlive no
  ServerAliveCountMax 50

ele ainda tentará usar id_null como o arquivo de identidade quando eu ssh exact.hostname.domain.com . Eu também tentei usar vários padrões e ter Host *.domain.com exact.hostname.domain.com em vez de repetir. Nada funciona. Alguma idéia do que está errado aí?

Como posso ter um User e IdentityFile padrão e substituí-los por domínio?

edite 1: Eu adicionei o Host exact.hostname.domain.com para antes e depois do * one. e ssh -vvv mostra:

debug1: /Users/.../.ssh/config line 1: Applying options for exact.hostname.domain.com
debug1: /Users/.../.ssh/config line 19: Applying options for *
debug1: /Users/.../.ssh/config line 37: Applying options for exact.hostname.domain.com

mas eu ainda recebo no final no such identity: .ssh/id_null: No such file or directory

edição 2: alguma outra estranheza que vi em ssh -vvv

ele sempre tenta usar todas as chaves que eu tenho. Então eu imaginei porque pode ter algum padrão codificado para .ssh/id_rsa* , então eu mudei todas as minhas chaves priv para .ssh/keys/ para escondê-lo daquele padrão, e atualizei as entradas específicas de Host ... no final, está tentando chaves de todas as entradas do host! até os que não combinam!

recapitulando, eu tenho uma correspondência de host específica na parte superior e inferior do arquivo (apenas para garantir), depois os hosts que não correspondem e o * um.

mas o ssh -vvv mostra:

debug1: SSH2_MSG_SERVICE_ACCEPT received
debug2: key: /Users/x/.ssh/keys/id_rsa_git (0x7f954b700530),
debug2: key: /Users/x/.ssh/keys/id_rsa (0x7f954b415700), explicit
debug2: key: /Users/x/.ssh/id_null (0x0), explicit

Por que motivo está adicionando .ssh/keys/id_rsa_git se esse for o IdentityFile mencionado apenas em Host github.com ? e por que, finalmente, está tentando enviar id_null mesmo que ele corresponda ao explícito Host exact.hostname.domain.com , como diz na saída de depuração debug1: /Users/.../.ssh/config line 1: Applying options for exact.hostname.domain.com ?

edição 3:

depois que eu movi todas as minhas chaves para .ssh/keys/* e especifico apenas as chaves lá para cada host em ssh_config , agora eu vejo em cada ssh instanciação:

/Users/me/.ssh/id_*[^p][^u][^b]: No such file or directory

mas mesmo depois disso, ainda carrega os IdentityFiles de outros hosts em ssh_config durante a conexão. Por quê?!

    
por gcb 03.12.2015 / 13:47

1 resposta

1

man ssh-config diz:

Since the first obtained value for each parameter is used, more host-specific declarations should be given near the beginning of the file, and general defaults at the end.

Portanto, certifique-se de que a configuração desejada esteja na primeira entrada Host correspondente, conforme mostrado pelo ssh -vv lines matching: Applying options for .

No caso geral, isso significa que Host * deve ser último .

    
por 18.03.2017 / 08:37