Maneira direta de executar o ssh-agent e o ssh-add no login via SSH?


38

Estou tentando executar os seguintes comandos automaticamente quando faço login no meu servidor via ssh:

ssh-agent /bin/bash
ssh-add ~/.ssh/id_rsa

Minha chave ssh tem uma senha e eu estou bem em inseri-la uma vez por login.

Tentei colocar isso no meu arquivo .bashrc, mas acredito que o ssh-agent inicia uma nova sessão do bash. Quando tento fazer o login depois de o ter no.

Alguma outra sugestão?

O servidor está executando o Ubuntu LTS


Por que agente chave no servidor? Deve estar no seu cliente local do qual você está se conectando.
Zoredache

@ Zoredache que eu quero ser capaz de fazer git pulle coisas assim no servidor remoto
Clique em Upvote

Em seguida, execute um agente SSH em sua máquina local e encaminhe o agente.
precisa

@ Zoredache Obrigado, não sabia que era possível. No entanto, eu ainda gostaria de poder executar o ssh-add / ssh-agent a partir de um script bash, mesmo da minha máquina local. É uma dor ter que executar esses comandos manualmente.
Click Upvote

Respostas:


52

Você pode tentar adicionar isso:

eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa

Dessa forma ssh-agent, não inicia um novo shell, apenas se lança em segundo plano e cospe os comandos do shell para definir as variáveis ​​de ambiente apropriadas.

Como dito no comentário, talvez você não queira executar o agente no host remoto, mas na caixa da qual está trabalhando e use

ssh -A remote-host

encaminhar os serviços do seu agente ssh local para o host remoto.

Por motivos de segurança, você só deve usar o encaminhamento de agente com hosts executados por pessoas confiáveis, mas é melhor do que executar um agente completo remotamente a qualquer momento.


Quando substituo ssh-agent /bin/bashpor ssh-agent -se tento fazer git pull, ainda me pedem a senha da chave privada para desbloqueá-la. Não é exatamente isso que eu quero, quero apenas inserir a senha ao fazer o ssh-add e não precisar repeti-la sempre que executar qualquer comando git. Alguma ideia?
Click Upvote

e executar o agente localmente e usar ssh -A não é uma opção para você? O problema é que você não pode 'reiniciar' o ssh-agent em todas as conexões. Toda vez que você iniciá-lo, ele sabe 'nada' e quando você ssh-adicione a chave terá de decifrá-lo ...
Tobi Oetiker

para o arquivo .ssh / config: Anfitrião remoto-host ControlMaster auto ControlPath ~/.ssh/master-%l-%r@%h:% p ControlPersist 2h
Tobi Oetiker

1
oops só percebi no bash você precisa de um eval extra na frente da chamada ssh-agent .. atualizei a minha resposta acima
Tobi Oetiker

1
você poderia criar um alias
Tobi Oetiker

2

Uma alternativa é usar o chaveiro do Funtoo . Em seguida, você pode colocar esta linha em seu shell bash:

eval $(keychain --eval id_rsa)

Isso faz a mesma coisa (inicia o agente ssh, etc.), enquanto também não executa um processo ssh-agent para cada subshell. Em vez disso, procura instâncias "já em execução" que você possui e o anexa a elas.

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.