OS X - faz com que os comandos SSH comuns usem a configuração SSH

1

Aqui está uma lista (um pouco editada) do meu ~/.ssh/config no OS X 10.6.8 Snow Leopard:

Host *
     IdentitiesOnly yes

Host foo1
     IdentitiesOnly yes
     User foo1
     HostName example.com
     IdentityFile ~/.ssh/foo1_rsa

Host foo2
     IdentitiesOnly yes
     User foo2
     HostName example.com
     IdentityFile ~/.ssh/foo2_rsa

# (and so on) 

Host bar1
     IdentitiesOnly yes
     User bar1
     HostName example.org
     IdentityFile ~/.ssh/bar1_rsa

Host bar2
     IdentitiesOnly yes
     User bar2
     HostName example.org
     IdentityFile ~/.ssh/bar2_rsa

# (and so on some more) 

Host github
     IdentitiesOnly yes
     User git
     HostName github.com
     IdentityFile ~/.ssh/github_rsa

Host heroku
     IdentitiesOnly yes
     User git
     HostName heroku.com
     IdentityFile ~/.ssh/heroku_rsa

Vamos executar um comando para ver se isso funciona:

$ ssh github
PTY allocation request failed on channel 0
Hi sampablokuper! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

OK, o primeiro comando funciona. Vamos tentar um segundo comando:

$ ssh [email protected]
Permission denied (publickey).

Uh-oh, o segundo comando não funcionou.

A minha pergunta é: o que posso fazer para que o segundo comando acima produza o mesmo resultado que o primeiro comando?

NB. Adicionar a opção -v sugere que o segundo comando falhe porque em vez de oferecer ao servidor do Github a chave pública especificada para [email protected] em ~/.ssh/config (ou seja, ~/.ssh/github_rsa ), ele oferece ~/.ssh/id_rsa .

    
por sampablokuper 08.03.2013 / 19:22

1 resposta

4

Quando você usa ssh [email protected] , ele ignora seu arquivo de configuração, pois ele não tem um Host correspondente configurado e, em vez disso, usa o ssh simples - o que provavelmente carrega ~/.ssh/id_rsa do seu arquivo-chave do Github, ~/.ssh/github_rsa . (Observe que, se você tivesse um ssh-agent em execução, seu comando talvez utilizasse uma chave carregada anteriormente. Isso poderia acontecer se você tivesse aberto o cliente de desktop do Github.)

Para permitir que seu segundo comando funcione, duplique a entrada Host existente para github , alterando o host para github.com . Agora, quando você faz referência a esse host, o ssh tem uma configuração para ler. (Alternativamente, você pode atualizar a entrada Host atual com um padrão de caractere curinga, por exemplo, github* .)

Aqui está uma referência para o ssh_config: link . A opção -v é útil para determinar se a configuração e quais chaves, se houver, estão sendo carregadas.

    
por 09.03.2013 / 02:37