Por que o ssh-agent não salvará minha chave não criptografada para uso posterior?

12

Toda vez que eu faço o SSH em outro servidor do nosso servidor Ubuntu sem cabeça, me pedem a senha para o meu arquivo-chave. Mesmo se eu tiver conectado anteriormente ao servidor.

Você tem alguma ideia de por que isso talvez? Pode ser algo tão simples como ssh-agent não sendo executado atualmente ou algo assim.

A mesma tecla na minha área de trabalho Ubuntu Gnome está funcionando bem. Tanto o servidor quanto a área de trabalho estão executando o Ubuntu 10.10.

ps -ef | grep '[s]sh-agent'
simon     3219     1  0 12:46 ?        00:00:00 ssh-agent
    
por Treffynnon 21.04.2011 / 13:56

3 respostas

10

Mesmo que o agente esteja ativo, se determinadas variáveis de ambiente não estiverem configuradas, você não terá nenhuma referência ao agente. Além disso, mesmo que esteja tudo bem, agente e variáveis, a identidade não é enviada automaticamente ao agente: essa é uma tarefa para ssh-askpass , funcionando apenas em sessões X.

Se você estiver usando o bash, crie o arquivo ~/.bash_profile com este conteúdo:

# File: ~/.bash_profile

# source ~/.profile, if available
if [[ -r ~/.profile ]]; then
  . ~/.profile
fi

# start agent and set environment variables, if needed
agent_started=0
if ! env | grep -q SSH_AGENT_PID >/dev/null; then
  echo "Starting ssh agent"
  eval $(ssh-agent -s)
  agent_started=1
fi

# ssh become a function, adding identity to agent when needed
ssh() {
  if ! ssh-add -l >/dev/null 2>&-; then
    ssh-add ~/.ssh/id_dsa
  fi
  /usr/bin/ssh "$@"
}
export -f ssh

# another example: git
git() {
  if ! ssh-add -l >/dev/null 2>&-; then
    ssh-add ~/.ssh/id_dsa
  fi
  /usr/bin/git "$@"
}
export -f git

modifique o nome do arquivo ~/.ssh/id_dsa seguindo suas necessidades e adicione essa linha a ~/.bash_logout

# stuff to add at end of ~/.bash_logout
if ((agent_started)); then
  echo "Killing ssh agent"
  ssh-agent -k
fi

Uma última nota: isso não interfere em uma sessão do gnome, porque nesse caso somente ~/.profile é originado, e você pode se beneficiar da interface gráfica ssh-askpass que pede uma frase-senha e a envia para o ssh-agent .

    
por enzotib 21.04.2011 / 18:47
2

Recentemente, comecei a usar o ssh-ident:

link

tudo que você precisa fazer é adicionar algo como:

alias ssh="/path/to/ssh-ident"

no seu .bashrc . Como alternativa, você pode ln -s /path/to/ssh-ident ~/bin/ssh ou algum outro diretório em seu PATH antes de /bin e /usr/bin .

    
O
por rabexc 22.03.2013 / 18:13
1

Esta pergunta tem uma resposta muito boa sobre SuperUser .

Eu achei a dica para usar o Keychain muito útil.

    
por metakermit 11.06.2012 / 15:28

Tags