Quando gnome-shell
trava no Linux Mint 12, geralmente aparece novamente em alguns segundos. Quando não, parece que leva o daemon do chaveiro com ele, porque depois de reiniciar com
while true; do DISPLAY=:0 gnome-shell --replace; done &
ele pede a senha da chave toda vez que eu executo comandos como git pull
. Como faço para reiniciar o daemon do chaveiro (se esse “é esse o problema aqui) ao reiniciar gnome-shell
?
Resposta
ATUALIZAÇÃO: Estas instruções podem estar obsoletas. Parece que em sistemas recentes os soquetes do gnome-keyring movidos de um diretório aleatório em ~/.cache/
para /run/user/<ID>/keyring/
(em menos no Debian Jessie), então uma reinicialização simples deve ser suficiente.
É um pouco complicado, já que o gnome-keyring-daemon define parâmetros de ambiente exclusivos antes de sua sessão iniciar e este ambiente é usado para acessar o daemon através um soquete. O ambiente é copiado para todos os aplicativos, portanto não há como redefinir todas as variáveis de ambiente. forma que envolve reiniciar manualmente o daemon, vincular simbolicamente o diretório antigo ao novo (para que o ambiente antigo ainda funcione) e, em seguida, iniciar os serviços individuais.
-
Certifique-se de que não haja gnome- keyring-daemon em execução (este comando não deve retornar nenhum pid, se precisar, você precisa eliminá-lo)
pgrep -f gnome-keyring-daemon
-
Limpar o chaveiro antigo sockets
rm -rf ~/.cache/keyring-*
-
Inicie o processo daemon – usamos setsid e redirecionamos SDTIN, OUT & ERR então não há associação com nosso shell / tty. Isso criará um novo diretório com soquete de controle em ~ / .cache /.
setsid /usr/bin/gnome-keyring-daemon </dev/null >/dev/null 2>&1
-
Vincule simbolicamente o novo diretório de soquete ao antigo um (de preferência substitua o curinga pelo diretório real, mas como removemos todos antes, deve haver apenas um):
ln -s ~/.cache/keyring-* $GNOME_KEYRING_CONTROL
NB: Não tenho o seu problema com o gnome-shell, mas se você não tiver essas variáveis exportadas de onde você inicia o gnome-shell, muitos precisa passar manualmente as seguintes variáveis de ambiente para o gnome-shell:
GPG_AGENT_INFO GNOME_KEYRING_CONTROL SSH_AUTH_SOCK
. Você deve ser capaz de derivar o valor do caminho excluído em # 2 (se você tiver vários diretórios, precisa procurar o mais recente). -
Inicie o outro gnome- serviços de chaveiro (eles se conectarão ao daemon usando o soquete e habilitarão os serviços nele se tudo correr bem até agora):
/usr/bin/gnome-keyring-daemon --start --components=pkcs11 /usr/bin/gnome-keyring-daemon --start --components=gpg /usr/bin/gnome-keyring-daemon --start --components=ssh
Estes últimos comandos serão impressos variáveis de ambiente … você pode ignorá-las, apenas certifique-se de que não haja erros de conexão de soquete.
Além disso, se quiser limpar soquetes antigos, você pode adicionar um @reboot
entrada cron que faz uma limpeza:
find ~/.cache/ -maxdepth 1 -type l -name "keyring-*" -delete
Comentários
Resposta
Isso deve executar uma reinicialização limpa do daemon:
gnome-keyring-daemon -r -d
Fonte: ArchLinux
Comentários
- Funcionou perfeitamente no Mint 18 (Sarah). Obrigado!
- Funcionou no ubuntu 18.04, obrigado!
~/.cache/
, portanto, essas etapas poderiam ser ignoradas; apenas matar e osetsid
relançar foi suficiente. Em seguida,ssh
login pediu minha senha corretamente e armazenou em cache conforme o esperado.