Como forçar o usuário no arquivo de configuração ssh

1

Estou tentando substituir o usuário para determinados hosts. Me deparei com esse gist e, embora eu pudesse aperfeiçoá-lo, removendo a etapa de criar um novo alias de host para cada domínio conta necessária.

~ / .ssh / config

Host github.com bitbucket.org bitbucket.com
    User git

Host *
  Protocol 2
  UseKeychain yes
  AddKeysToAgent yes
  IdentitiesOnly yes
  IdentityFile ~/.ssh/%r@%h_id_rsa

Infelizmente, ao contrário de Hostname , Port e outras propriedades, ao definir User git , não está alterando o valor.

$ ssh -Tv [email protected]

O GitHub ainda está tentando autenticar o usuário tarranjones em vez de git

debug1: Authenticating to github.com:22 as 'tarranjones'

Existe alguma maneira de contornar isso?

    
por TarranJones 14.02.2017 / 14:00

3 respostas

2

Você não pode substituir um usuário especificado na linha de comando. Apenas forneça um padrão para quando nenhum for especificado (se não houver nenhum padrão fornecido em seu ~ / .ssh / config, seu login, conforme retornado por whoami , será usado). Então funcionará como desejado se você usar: ssh -Tv github.com

Note que você pode realmente configurar o Host para qualquer valor, não apenas um que corresponda a um host real, assim:

Host gh
    Hostname gh
    User git

Então você pode usar ssh -Tv gh .

    
por 14.02.2017 / 14:09
0

Host * também pode ser excluído:

IdentityFile %d/.ssh/%r@%h_id_rsa
Protocol 2
UseKeychain yes
AddKeysToAgent yes
IdentitiesOnly yes

Host github.com bitbucket.org bitbucket.com
  User git

Não especifique o nome de usuário na linha de comando, pois isso substituirá o nome de usuário na configuração.

    
por 14.02.2017 / 14:30
0

O %r e %h no IdentityFile (~/.ssh/%r@%h_id_rsa) sempre será o mesmo que o usuário remoto e o host remoto usados para autenticar.

No exemplo, mudei Hostname

Host github.com bitbucket.org bitbucket.com
  IdentityFile ~/.ssh/%r@%h_id_rsa
  Hostname newhostname.com

Teste

$ ssh -Tv [email protected]

Resultado

debug1: Authenticating to github.com:22 as 'tarranjones'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

Neste exemplo, eu mudei User

Host github.com bitbucket.org bitbucket.com
  IdentityFile ~/.ssh/%r@%h_id_rsa
  User git

Teste

$ ssh -Tv [email protected]

Agora o nome do host remoto não mudará, mas se ele mudar, isso significaria que o nome IdentityFile correspondente estaria errado.

debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

Usando percent_expand para o nome do host remoto %h não funcionará para nomear o arquivo de identidade. Isso sempre precisará ser codificado se você quiser diferir do nome do host remoto usado para autenticar.

O melhor que eu consegui dizer é isso.

#Set Git User Domains
Host *-github.com *-bitbucket.org *-bitbucket.com
  User git

#IdentityFile
Host tarranjones-*
  IdentityFile ~/.ssh/tarranjones@%h_id_rsa

Host otherusername-*
  IdentityFile ~/.ssh/otherusername@%h_id_rsa

#Hostnames
Host *-github.com
  Hostname github.com

Host *-bitbucket.com *-bitbucket.org
  Hostname bitbucket.org

Host *
  Protocol 2
  UseKeychain yes
  AddKeysToAgent yes
  IdentitiesOnly yes

Uso

$ ssh -Tv tarranjones-github.com

Resultado

debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa

Por favor, consulte Gist atualizado

    
por 14.02.2017 / 16:01