Como acionar manualmente a caixa de diálogo ssh add?

6

Executar ssh-add na linha de comando não mais desbloqueia as chaves ssh corretamente no meu sistema (Ubuntu 11.10 com Unity). Mesmo depois de executar o ssh-add, quando eu ssh para um servidor, aparece uma caixa de diálogo perguntando-me por minha senha de chave ssh. Depois disso, as coisas funcionam como esperado.

ssh-agent está sendo executado. Quando eu fizer login pela primeira vez:

$ ps -ef | grep ssh-agent
mish      1853  1818  0 18:55 ?        00:00:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/gnome-session --session=ubuntu

Como posso desbloquear a chave ssh corretamente sem ter que enviar um ssh para um servidor? (Acionar manualmente a janela de diálogo da chave ssh seria OK como uma solução, mas eu não sei como fazer isso).

Meu caso de uso é que eu uso o tmuxinator e quero configurar várias conexões ssh. Então eu quero a chave ssh desbloqueada. Caso contrário, todas as caixas de diálogo da chave ssh aparecerão e eu terei que inserir minha frase-senha várias vezes. Ou eu posso ssh em algum lugar antes de iniciar o tmuxinator, mas a conexão é lenta aqui, então isso apenas adiciona atrito. Então eu quero destravar a chave ssh antes de iniciar o tmuxinator, sem ter que procurar o ssh primeiro.

Editar

Apenas tentei sair e fazer login novamente. Então eu fiz:

$ env | grep -i ssh
SSH_AGENT_PID=8693
SSH_AUTH_SOCK=/tmp/keyring-Ho4cfE/ssh
$ ssh-add -D
All identities removed.
$ ssh-add -l
1024 b8:12:34:56[...]:19 name@computer (DSA)
$ ssh-add
Enter passphrase for /home/name/.ssh/id_dsa: 
Identity added: /home/name/.ssh/id_dsa (/home/mish/.ssh/id_dsa)
$ ssh-add -l
1024 b8:12:34:56[...]:19 /home/name/.ssh/id_dsa (DSA)
1024 b8:12:34:56[...]:19 name@computer (DSA)
0 mish@mishtop:~$ ssh server

Nesse ponto, outra pergunta minha frase de acesso é feita pela caixa de diálogo da GUI. Frustrante ...

Também é interessante que, depois de "Todas as identidades removidas", o ssh-add -l ainda exibir uma identidade. Isso me confunde. E parece haver apenas um agente ssh em execução.

Editar 2:

Encontrei um bug no launchpad sobre isso: link

No entanto, esta questão foi sobre como encontrar uma solução alternativa, em vez de perguntar por que não funcionou, então espero que a pergunta seja válida.

Editar 3:

Nada incomum em /etc/ssh/ssh_config - não toquei nele. Eu tenho um ~/.ssh/config , mas isso é apenas portas e nomes de usuários.

Eu observei quais processos estavam sendo executados quando a caixa de diálogo apareceu, e foi /usr/lib/gnome-keyring/gnome-keyring-prompt-3 , iniciado por /usr/bin/gnome-keyring-daemon --daemonize --login . Tentei iniciar o prompt a partir de um terminal, mas nada aconteceu. Então ainda está preso.

    
por Hamish Downer 17.04.2012 / 14:50

3 respostas

4

Não é uma resposta direta à pergunta acima, mas sim uma solução para o problema principal:

Pare de iniciar o ssh-agent do gnome-keyring. Em seguida, ssh-agent, ssh-add e ssh funciona como esperado. (Ou pelo menos como eu esperava).

Para impedir que o ssh-agent do gnome-keyring inicie:

sudo mv /etc/xdg/autostart/gnome-keyring-ssh.desktop /etc/xdg/autostart/gnome-keyring-ssh.desktop.disabled
    
por Hamish Downer 24.04.2012 / 12:33
1

Editar

Isso inicia um prompt gráfico para minha senha ssh, mas diferente da que permite que o ssh use a chave ssh. Mesmo depois que eu fiz isso, eu ainda recebo um prompt da GUI para perguntar pela senha da chave ssh: /

Veja a edição 3 da pergunta acima para saber mais.

Original

Encontrei uma maneira de ativá-lo no final. Eu criei ~/bin/gssh-add e coloquei o seguinte:

SSH_ASK_PASS=/usr/bin/ssh-askpass ssh-add

Eu então faço com que seja executável:

chmod +x ~/bin/gssh-add

E então eu inicio usando Alt + F2. Isso aciona a caixa de diálogo do gnome.

Observe que, se você executar gssh-add do terminal, a caixa de diálogo do gnome não será disparada. Consulte a seção MEIO AMBIENTE da página do manual ssh-add detalhes sobre o porquê.

    
por Hamish Downer 20.04.2012 / 09:57
0
  

Ou eu posso ssh em algum lugar antes de iniciar o tmuxinator, mas a conexão é lenta aqui, então isso apenas adiciona atrito.

Não se esqueça de que seu ' algum lugar ' não precisa ser remoto:

ssh localhost

É assim que costumo fazer isso.

(Eu então digito ^D no novo prompt do shell para descartá-lo e voltar para o antigo. Se você não se importar com as teclas extras, um comando como ssh localhost true é uma alternativa mais clara.)

É claro que isso só funciona em sistemas que solicitam chaves SSH (por exemplo, depois de usar ssh-copy-id ), mas a partir de sua pergunta parece que você provavelmente já a obteve.

    
O
por Paul Whittaker 07.05.2014 / 15:24