xautolock / ssh-add não pode interagir com o ssh-agent se for iniciado a partir de .xsessionrc

2

Eu uso xautolock para bloquear a tela e suspender meu laptop após um determinado período de inatividade. Isso funciona bem. É assim que xautolock é iniciado a partir de .xsessionrc :

xautolock -time 60 -detectsleep -locker '~/bin/lockscreen --suspend' &

O script ~/bin/lockscreen faz, entre outras coisas, ssh-add -D para remover todas as chaves SSH do agente SSH em execução. Isso, no entanto, não funciona quando xautolock é gerado a partir de .xsessionrc - o comando ssh-add -D reclama que não pode falar com o agente de autenticação.

No entanto, posso ssh-add -D do meu terminal funcionar bem, e se eu pkill xautolock e depois executar o comando xautolock do meu .xsessionrc em um terminal, tudo funcionará como esperado.

Por que o processo ssh-add -D não pode gerar a partir de xautolock gerado a partir de .xsessionrc falar com o agente SSH, mas ssh-add -D gerado a partir de xautolock gerado a partir de um terminal comum?

ps auf mostra esta árvore:

root     24126  0.0  0.1 105812  5032 tty1     Ss   18:34   0:00 /bin/login --        
andreas  24132  0.0  0.1  40232  4956 tty1     S    18:34   0:00  \_ -zsh
andreas  24140  0.0  0.0   4328  1576 tty1     S+   18:34   0:00    \_ /bin/sh /usr/bin/startx
andreas  24162  0.0  0.0  15944  1952 tty1     S+   18:34   0:00      \_ xinit /etc/X11/xinit/xinitrc -- /etc/X11/xinit/xserverrc :0 vt1 -auth /tmp/serverauth.afXu0ohTRz
root     24163  1.4  0.5 165868 20048 tty1     S    18:34   0:02        \_ /usr/bin/X -nolisten tcp :0 vt1 -auth /tmp/serverauth.afXu0ohTRz
andreas  24169  0.0  0.2 113572 10600 tty1     S    18:34   0:00        \_ x-window-manager
andreas  24203  0.0  0.7 489436 26380 tty1     Sl   18:34   0:00          \_ nm-applet
andreas  24204  0.0  0.0  20140  2700 tty1     S    18:34   0:00          \_ xautolock -time 60 -detectsleep -locker ~/bin/lockscreen --suspend
andreas  24209  0.0  0.0  22196  2680 tty1     S    18:34   0:00          \_ /usr/bin/unclutter -idle 1 -root
andreas  24212  0.0  0.0  10688   340 ?        Ss   18:34   0:00          \_ /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session x-window-manager

Minha única teoria de trabalho é que porque xautolock é iniciado antes do agente SSH, o comando bifurcado ssh-add não sabe sobre a existência do agente, mas isso parece muito estranho para mim.

    
por Andreas 21.01.2016 / 20:02

1 resposta

1

O gerenciador de janelas X é iniciado através do comando ssh-agent dbus-launcher --exit-with-session i3 , o que significa que o agente SSH é iniciado logo antes do gerenciador de janelas. No entanto, as fontes do Debian .xsessionrc antes disso acontecer, então quando xautolocker for iniciado, o agente SSH não foi iniciado e as variáveis de ambiente necessárias para que ssh-add fale com o agente não foram definidas.

Uma solução é modificar .xinitrc para iniciar o agente antes de obter .xsessionrc :

if command -v 'ssh-agent' >/dev/null 2>&1; then
    eval $(ssh-agent -s)
fi

[ -e $HOME/.xsessionrc ] && . $HOME/.xsessionrc

x-window-manager

if command -v 'ssh-agent' >/dev/null 2>&1; then
    ssh-agent -k
fi
    
por 22.01.2016 / 21:19