vários alias ssh selecionando usuário errado ao encaminhar

3

Estou seguindo o procedimento de dupla identidade para o bitbucket :

Eu tenho duas contas bitbucket ccmcbeck e chrisbeck . O primeiro é pessoal, o segundo é trabalho.

No meu Mac local, eu tenho isso no meu ~/.ssh/config

Host *.work.com
  User chris
  ForwardAgent yes
  IdentityFile ~/.ssh/work_dsa
Host bitbucket-personal
  HostName bitbucket.org
  User ccmcbeck
  ForwardAgent no
  IdentityFile ~/.ssh/bitbucket_ccmcbeck_rsa
Host bitbucket-work
  HostName bitbucket.org
  User chrisbeck
  ForwardAgent no
  IdentityFile ~/.ssh/bitbucket_chrisbeck_rsa

No meu Mac local, eu ssh -T tudo é bom, eu recebo:

$ ssh -T git@bitbucket-personal
logged in as ccmcbeck.
$ ssh -T git@bitbucket-work
logged in as chrisbeck.

No meu Mac local, a versão do ssh é OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Quando eu ssh foo.work.com para minha caixa do Linux, recebo:

$ ssh-add -l
1024 ... /Users/chris/.ssh/work_dsa (DSA)
2048 ... /Users/chris/.ssh/bitbucket_ccmcbeck_rsa (RSA)
2048 ... /Users/chris/.ssh/bitbucket_chrisbeck_rsa (RSA)

Em foo.work.com , também tenho isso em meu ~/.ssh/config

Host bitbucket-personal
  HostName bitbucket.org
  User ccmcbeck
  ForwardAgent no
  IdentityFile ~/.ssh/bitbucket_ccmcbeck_rsa
Host bitbucket-work
  HostName bitbucket.org
  User chrisbeck
  ForwardAgent no
  IdentityFile ~/.ssh/bitbucket_chrisbeck_rsa

No entanto, em foo.work.com quando eu ssh -T , ele faz referência ao usuário errado por git@bitbucket-work

$ ssh -T git@bitbucket-personal
logged in as ccmcbeck.
$ ssh -T git@bitbucket-work
logged in as ccmcbeck.

Em foo.work.com , a versão do ssh é OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

Por que minha configuração está causando foo.work.com para fazer referência ao usuário errado?

    
por Chris Beck 07.06.2014 / 16:39

1 resposta

3

A explicação mais provável parece-me que o ssh-agent está usando qualquer tecla carregada a qualquer momento. Você pode eliminar esse comportamento usando a diretiva IdentitiesOnly em seu arquivo de configuração, da seguinte maneira:

 Host bitbucket-personal
 HostName bitbucket.org
 User ccmcbeck
 ForwardAgent no
 IdentityFile ~/.ssh/bitbucket_ccmcbeck_rsa
 IdentitiesOnly yes

 Host bitbucket-work
 HostName bitbucket.org
 User chrisbeck
 ForwardAgent no
 IdentityFile ~/.ssh/bitbucket_chrisbeck_rsa
 IdentitiesOnly yes

Do ssh man page :

Specifies that ssh(1) should only use the authentication identity files configured in the ssh_config files, even if ssh-agent(1) offers more identities. The argument to this keyword must be ''yes'' or ''no''. This option is intended for situations where ssh-agent offers many different identities. The default is ''no''.

EDITAR:

Na sua postagem, há essas linhas até o final:

 debug1: SSH2_MSG_SERVICE_ACCEPT received
 debug2: key: /home/chrisb/.ssh/bitbucket_chrisbeck_rsa ((nil))
 debug1: Authentications that can continue: publickey

Eles mostram claramente que essa chave não foi aceita. É por isso que você sempre faz login como ccmcbeck: essa tecla funciona e, sem IdentitiesOnly yes , o cliente tentou outras chaves até encontrar uma que funcionasse. Introduzindo essa restrição, pelo menos esclarecemos a natureza do problema.

Como no seu Mac você não parece ter esse problema, ele deve residir no cliente Linux e, em particular, na chave privada que você está tentando usar. O melhor é gerar um novo, local para o Linux, e colocar sua contraparte .pub entre os authorized_keys . Espero que isto ajude.

EDIT2:

... ou você pode seguir esta resposta do Superusuário para selecionar a chave privada que você deseja usar especificando sua contraparte pública do agente encaminhado. A resposta ainda requer o uso da opção IdentitiesOnly yes .

    
por 07.06.2014 / 19:16

Tags