Não é possível conectar-se à execução do ssh-agent

1

Eu me conecto a uma sessão de tela de longa duração no servidor Ubuntu 12.04 e uso isso como uma caixa de salto para outras coisas às quais me conecto. Como resultado, quero um agente ssh de longa duração nessa máquina. Para esse fim, tenho o seguinte no meu .bashrc:

pgrep -u pdickey ssh-agent > /dev/null || ssh-agent -a $HOME/.ssh-auth-sock
SSH_AUTH_SOCK=$HOME/.ssh-auth-sock
export SSH_AUTH_SOCK

Desde que minha sessão de tela nunca seja desconectada, isso funciona perfeitamente. Eu posso gerar novas telas, e todos recebem o mesmo agente. O problema surge quando eu me desconecto da máquina que tem a sessão ssh original. Em uma reconexão, recebo o seguinte:

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

Tudo que descobri sobre isso parece indicar que isso acontece quando o agente não está em execução, mas posso verificar se ele está em execução e a variável $ SSH_AUTH_SOCK está definida:

$ ps -fu pdickey | grep ssh-agent
pdickey    435     1  0 04:11 ?        00:00:00 ssh-agent -a /home/pdickey/.ssh-auth-sock
$ echo $SSH_AUTH_SOCK
/home/pdickey/.ssh-auth-sock

Então, por que diabos isso não está conectando? Eu possuo o soquete:

$ ls -la .ssh-auth-sock 
srw------- 1 pdickey pdickey 0 Mar 10 04:33 .ssh-auth-sock=

Eu cheguei a ponto de tentar o processo, que depois de analisar todas as cargas da biblioteca, fornece a informação mais inútil:

64962 connect(3, {sa_family=AF_FILE, path="/home/pdickey/.ssh-auth-sock"}, 110) = -1 ECONNREFUSED (Connection refused)

Este é agora o limite do meu conhecimento linux / ubuntu / ssh. Por que uma tomada que possuo, criada por um processo que possuo, recusa a conexão de outro processo que possuo?

    
por pdickey 10.03.2014 / 09:36

1 resposta

1

Então acontece que isso é um resultado da decisão de criptografar meus diretórios home e colocar o auth-sock lá ... Isso significa que quando eu me separo totalmente da tela, meus programas em execução perdem acesso ao meu diretório home, que quebra o ssh -agente. Ele não mata o processo ssh-agent, como excluir o soquete normalmente, e não remove o soquete porque ele está em um diretório criptografado que a máquina não pode mais acessar. Isso também manifesta outras esquisitices como meu daemon do cron não sendo capaz de executar scripts no meu diretório home se eu não estiver logado.

    
por pdickey 21.03.2014 / 21:22