
Eu quero usar o agente ssh real em vez do chaveiro gnome no xubuntu. Eu segui os passos dehttp://dtek.net/blog/how-stop-gnome-keyring-clobbering-opensshs-ssh-agent-ubuntu-1204, mas o chaveiro gnome ainda se registra como agente ssh. Ainda quero continuar usando o gnome-keyring para outras senhas
Responder1
Acontece que se a compatibilidade do gnome estiver ativada no xfce, a sessão xfce4 iniciará incondicionalmente o gnome-keyring-daemon. Isso está codificado, no momento não há como configurar isso. Desativar o modo de compatibilidade do gnome faz com que o chaveiro não seja iniciado no login e você precisará fornecer sua senha novamente se iniciá-lo.
A solução mais simples parece ser interceptar a chamada para gnome-keyring-daemon e inserir um script que inserirá o --components
sinalizador nos argumentos para evitar que o gnome keyring substitua o ssh-add.
Execute o seguinte para mover o gnome-keyring-daemon:
sudo mv /usr/bin/gnome-keyring-daemon /usr/bin/gnome-keyring-daemon-wrapped
crie um novo gnome-keyring-daemon com
sudo nano /usr/bin/gnome-keyring-daemon
e insira o seguinte conteúdo:
#!/bin/sh
exec /usr/bin/gnome-keyring-daemon-wrapped --components=pkcs11,secrets,gpg "$@"
Torne o novo gnome-keyring-daemon executável com sudo chmod +x /usr/bin/gnome-keyring-daemon
.
Agora o chaveiro do gnome não tentará mais substituir o ssh-add.
Observe que a atualização do seu sistema irá restabelecer o gnome-keyring-daemon padrão, então você provavelmente precisará executar as etapas acima novamente após a atualização.
editar:
No xubuntu 14.10, a inicialização funciona de maneira um pouco diferente, pois o gkd também é iniciado a partir do início da sessão. É possível substituir a configuração inicial para que ele não inicie o componente ssh, mas mesmo assim o gkd iniciará seu componente ssh quando o xfce4-session também tentar iniciá-lo. Então, se você quiser que o xfce também inicie automaticamente os serviços do gnome, você ainda precisará do hack acima. Uma alternativa é desabilitar os serviços do GNOME (Configurações -> Sessão e Inicialização -> avançado -> Iniciar serviços do GNOME na inicialização), configurar o upstart para iniciar o gkd com o --components=pkcs11,secrets,gpg
sinalizador e, opcionalmente, também configurar os serviços do GNOME que você deseja iniciar manualmente.
(Além dos dois locais que iniciam o gkd mencionados acima, o gk-daemon também é iniciado antes disso a partir do lightdm/PAM para receber a senha de login do usuário. Mas esse lançamento não configura totalmente o gkd e ainda espera estar totalmente configurado por uma segunda tentativa de iniciá-lo, de modo que essa tentativa de início não seja relevante para o problema atual.)
Responder2
É um tópico antigo, mas minha solução alternativa para esse problema no Xubuntu 14.04 é simples, apenas reaparecendo gnome-keyring-daemon
na Sessão e na Inicialização. O que você precisa fazer é simplesmente executar o comando abaixo:
$ gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
Removemos “ssh” do componente do chaveiro Gnome.
- Vá para Menu > Configurações > Sessão e Inicialização
- Clique na guia Inicialização automática do aplicativo
- Clique no botão Adicionar
- Uma nova janela do aplicativo aparecerá, você pode preenchê-la como no exemplo abaixo
- Nome: Removedor de chaveiro SSH
- Descrição: Remover SSH do chaveiro do GNOME
- Comando:
gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
- Clique OK
Tente sair da sessão do XFCE e fazer login novamente. Para garantir que o chaveiro do Gnome não gerencie mais o ssh, basta executar.
$ ssh-add -l
Could not open a connection to your authentication agent.
Se você recebeu essa mensagem, significa que o chaveiro do Gnome não gerencia seu SSH e você está livre para usar a implementação original do agente ssh do OpenSSH.
Responder3
Para aproveitar a resposta de @JanKanis, rastreei até xfce4-session ser o culpado por iniciar o comando gnome-keyring-daemon --start.
Quando executado dessa forma, o gnome-keyring-daemon não verifica se o SSH_AUTH_SOCK já está configurado, o que é um "recurso", já que você pode ter o ssh-agent e o gnome-keyring-daemon fornecendo um soquete.
Primeiras coisas primeiro:
Adicionar ~/.config/upstart/gnome-keyring.conf
:
description "GNOME Keyring agents"
author "Dimitri John Ledkov <[email protected]>"
start on (starting xsession-init or starting ssh-agent or starting gpg-agent) and started dbus
task
script
# Stop because I say so
stop; exit 0
eval "$(gnome-keyring-daemon --start)" >/dev/null
initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
initctl set-env --global GPG_AGENT_INFO=$GPG_AGENT_INFO
end script
Agora substitua gnome-keyring-daemon por um wrapper (mudei o original para /usr/libexec/):
#!/bin/sh
gkd=/usr/libexec/gnome-keyring-daemon
debug=1
log=${XDG_CACHE_HOME:-"${HOME}/.cache"}/gkd.log
if [ ${debug} -gt 0 ]
then
echo "================" >> ${log}
echo "Invoked as $0 $@" >> ${log}
echo "================" >> ${log}
/usr/bin/pstree -lag >> ${log}
fi
case "$@" in
*--start*)
$gkd --components=pkcs11,secrets,gpg "$@"
;;
*)
$gkd "$@"
;;
esac
if [ ${debug} -gt 0 ]
then
/usr/bin/pstree -lag >> ${log}
fi
O código de depuração está lá para você descobrir por que parou de funcionar. Como nenhum desses programas possui métodos de configuração sensatos, simplesmente não há como evitar hackear comandos. Neste caso, não consigo encontrar nenhum método de configuração documentado para xfce4-session para não invocar gnome-keyring-daemon --start, que não tem outros efeitos colaterais. Todos eles fazem suposições sobre as coisas que estão sendo instaladas e, portanto, leem a mente do usuário.
Responder4
Aqui está uma versão menos invasiva do script que JanKanis postou. Ele aceita quaisquer componentes que foram passados para ele, mas retira o componente SSH.
#!/bin/bash
ARGS="$@"
COMPONENTS=""
if [[ $ARGS =~ \-\-components= ]]; then
component_match_expression='(\-\-components=([0-9a-z,]+))'
COMPONENTS=$(echo $ARGS | grep -oP "$component_match_expression")
ARGS=$(echo $ARGS | sed -E "s/$component_match_expression//")
COMPONENTS="--components=$(echo $COMPONENTS | grep -oP '(?<=\-\-components=)([0-9a-z,]+)' | sed -e 's/ssh//' -e 's/,,/,/')"
if [ "$COMPONENTS" != "--components=" ]; then
ARGS="$ARGS $COMPONENTS"
else
exit 0
fi
fi
/usr/bin/gnome-keyring-daemon-wrapped $ARGS