Como configurar o agente SSH para definir o usuário para o segundo salto?


0

É possível conectar-se a um servidor web e, em seguida, conectar-se a um servidor git usando o agente SSH se o segundo salto precisar de um usuário diferente?

Funciona se eu passar o nome do usuário explicitamente.

$ ssh web.example.com
# connects

  > ssh -T yellow@git.example.com
  > # connects

Não funciona se eu confiar na configuração do SSH para definir o usuário.

$ ssh web.example.com
# connects

  > ssh -T git.example.com
  > # permission denied

Aqui está a configuração SSH na minha máquina.

Host web.example.com
  User blue
  ForwardAgent yes

Host git.example.com
  User yellow

Na saída de depuração, diz autenticando como bluese a configuração configurasse o usuário yellowpara o host.

debug1: Authenticating to git.example.com:22 as 'blue'

Por que ele usa o usuário errado? Não quero codificar o usuário porque não funciona para toda a equipe usar o mesmo script de implantação.


1
O agente não encaminha nada no seu arquivo de configuração ssh. Ele lida apenas com o manuseio de chaves / certs.
Zoredache

Respostas:


2

Eu prefiro definir todas as configurações explicitamente no meu ~/.ssh/configcom um pequeno alias para cada host. Dessa forma, não precisarei usar nenhum sinalizador de linha de comando e posso simplesmente digitar menos e usar ssh Destinatione terminar.

Host web
    Hostname web.example.com
    User blue
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X 
    IdentityFile ~/.ssh/id_rsa.blue

Host git
    Hostname git.example.com
    User yellow 
    ForwardAgent yes
    AddKeysToAgent yes
    UseKeychain yes                                  # Specific to OS X
    IdentityFile ~/.ssh/id_rsa.yellow
    ProxyJump web

ProxyJumpé uma configuração relativamente nova que considero um pouco mais intuitiva do que a ProxyCommand. Agora ssh gitfará exatamente o que você precisa, primeiro crie uma sessão usando blue@web.example.comcomo primeiro salto a partir do qual você faz o tunel para o próximo salto yellow@git.example.com.

Você também pode usar o comando ProxyJump diretamente na linha de comando:

ssh -J blue@web.example.com yellow@git.example.com

Obrigado pela resposta. Quero que o servidor Web execute comandos git no servidor git e faça o download do código. Se eu usar proxy, o servidor da Web receberá um novo código? ou ele retransmitirá comandos e a máquina cliente recebe código? Eu posso conectar do cliente ao servidor git sem problemas sem o servidor web. Quero que o servidor da Web se conecte também sem armazenar chaves ou configurações.
AJcodez
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.