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


3

Estou seguindo o procedimento de identidade dupla para bitbucket :

Tenho 2 contas bitbucket ccmcbeck e chrisbeck. O primeiro é pessoal, o segundo é trabalho.

No meu Mac local, eu tenho isso na minha ~/.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 ssh é OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011

Quando eu ssh foo.work.com para minha caixa de Linux, eu 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, Eu também tenho isso na minha ~/.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, foo.work.com quando eu ssh -T, faz referência ao usuário errado para 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 ssh é OpenSSH_4.3p2, OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008

Por que minha configuração está causando foo.work.com referenciar o usuário errado?


FWIW, se eu ssh-add -d minha bitbucket-personal identidade, então foo.work.com usa o correto User
— Chris Beck

Ele também se comporta da mesma maneira em um servidor da AWS que tem OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
— Chris Beck

Parece que a ordem em que as chaves são adicionadas faz diferença. IOW foo.work.com usa o primeiro relatado por ssh-add -l.
— Chris Beck

Respostas:


3

A explicação mais provável parece-me que o agente ssh está usando qualquer chave que tenha carregado a qualquer momento. Você pode soltar esse comportamento usando o IdentitiesOnly diretiva em seu arquivo de configuração, como segue:

 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

De ssh man page:

Especifica que o ssh (1) deve usar apenas os arquivos de identidade de autenticação configurados nos arquivos ssh_config, mesmo que o ssh-agent (1) ofereça mais identidades. O argumento para esta palavra-chave deve ser '' sim '' ou '' não ''. Esta opção é destinada a situações em que o agente ssh oferece muitas identidades diferentes. O padrão é '' não ''.

EDITAR:

Em seu post 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 loga como ccmcbeck: essa chave 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. A melhor coisa é gerar um novo, local para o Linux, e colocar seu .pub contraparte 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 do IdentitiesOnly yes opção.


Eu tentei isso e recebi "permissão negada" quando ssh -T para alias.
— Chris Beck

@ChrisBeck Você poderia ser mais específico? Correndo ssh com o -v bandeira, por favor.
— MariusMatutiae

@ChrisBeck Por favor, veja minha edição
— MariusMatutiae

Obrigado @MariusMatutiae. FWIW, ambos ccmcbeck e chrisbeck trabalhar se eles são o primeiro em ssh-add -l sem IdentitiesOnly yes. Com IdentitiesOnly yes em work.foo.com, ssh parece procurar apenas por chaves locais, não pelas chaves passadas através do agente ssh no meu Mac.
— Chris Beck

você estava muito perto da solução que está aqui superuser.com/questions/273037/… . Além disso, eu precisava colocar a chave do pub work.foo.com e referência que no ~/.ssh/config. Se você atualizar sua resposta, eu aceitarei
— Chris Beck
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.