ssh'ing de uma máquina em que eu estive

3

Eu estou tentando ssh em uma máquina (vamos chamá-lo B ) de uma máquina (vamos chamá-lo A ) e, em seguida, executar um comando nessa máquina ( B ) que normalmente exigiria a entrada uma frase secreta ssh (se você estiver interessado, estou tentando git pull de um repositório privado no BitBucket).

Eu posso ssh em B de A (sem inserir uma frase secreta) e posso executar comandos nessa máquina, assim:

A > ssh B 'ls'

Eu também posso ssh em B de A e executar meu git pull , e ele pede uma frase secreta:

A > ssh B
B > git pull
Enter passphrase for key '/home/username/.ssh/id_rsa': 

No entanto, se eu tentar um git pull (o que exigiria uma frase secreta), isso acontece:

A > ssh cbc 'git pull'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Alguma ideia de como posso obter git pull funcionando sem uma senha de A on B ?

    
por Dominic Rodger 30.12.2011 / 19:13

1 resposta

5

Configure ssh-agent (ou equivalente) e ative o encaminhamento de agentes para conexões SSH.

Ativar ssh-agent em sua máquina local

"Local" é o que você está sentado. Você não precisa executar o agente em nenhum outro lugar.

Se você tiver sorte, já estará correndo; a maioria das distribuições Linux inicia uma instância para cada sessão X11. Execute ssh-add para importar suas chaves; ssh-add -l para listar chaves.

Se estiver usando o GNOME ou Mac OS X, você provavelmente terá sua própria implementação de agente, que importa chaves conhecidas no login. Com o padrão OpenSSH ssh-agent , porém, você precisa fazer isso manualmente (embora existam scripts e módulos PAM para automatizar).

No Windows, o PuTTY vem com Pageant e o Cygwin OpenSSH com o mesmo ssh-agent (embora muito mais complicado de usar do que no Unix).

Ativar o encaminhamento de agentes

Depois de ter o agente funcionando e as teclas carregadas, tente se conectar assim:

A> ssh-add -l

A> ssh -A B ssh-add -l

A opção -A permite o encaminhamento do agente pela conexão SSH, portanto, se tudo funcionar corretamente, os dois comandos acima devem fornecer uma saída idêntica.

$ ssh-add -l
2048 06:b7:29:1e:6b:ea:c3:04:c4:33:fc:48:e0:62:2f:ef grawity@anywhere (old key) (RSA)
4096 19:3c:f0:79:32:00:fa:04:2f:15:5d:2a:e2:c9:a3:ad grawity@anywhere (2011-11-01) (RSA)

$ ssh panther ssh-add -l
Could not open a connection to your authentication agent.

$ ssh -A panther ssh-add -l
2048 06:b7:29:1e:6b:ea:c3:04:c4:33:fc:48:e0:62:2f:ef grawity@anywhere (old key) (RSA)
4096 19:3c:f0:79:32:00:fa:04:2f:15:5d:2a:e2:c9:a3:ad grawity@anywhere (2011-11-01) (RSA)

Se funcionar, torne-a persistente editando ~/.ssh/config - coloque isso na parte inferior:

Host *
    ForwardAgent yes

Em vez de * , você pode fornecer uma lista de nomes confiáveis; veja a página de manual de ssh_config para a sintaxe exata.

Você pode ativar o encaminhamento em todas máquinas; não há limite para o quanto você pode encadear.

    
por 30.12.2011 / 19:25

Tags