.xsessionrcで起動した場合、xautolock / ssh-addはssh-agentと対話できません。

.xsessionrcで起動した場合、xautolock / ssh-addはssh-agentと対話できません。

xautolock私は一定時間活動がなければ画面をロックしてラップトップを一時停止する習慣があります。これは素晴らしい作品です。これは次xautolockから始まります.xsessionrc

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

この~/bin/lockscreenスクリプトの機能の1つは、ssh-add -D実行中のSSHエージェントからすべてのSSHキーを削除することです。ただし、xautolockこれは作成時には機能しません.xsessionrcssh-add -Dコマンドは認証プロキシと通信できないと文句を言います。

ただし、ssh-add -D端末でこれをうまく実行できます。端末pkill xautolockでコマンドを実行すると、すべてがxautolock期待どおりに機能します。.xsessionrc

SSHエージェントとの会話ではssh-add -Dプロセスを作成できませんが、通常の端末を介して生成できるのはなぜですか?xautolock.xsessionrcssh-add -Dxautolock

ps aufこのツリーを表示します。

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

私の唯一の理論は、xautolockSSHエージェントの前に起動するため、forkssh-addコマンドがエージェントの存在を知らないことです。しかし、それは奇妙に見えます。

ベストアンサー1

Xウィンドウマネージャはコマンドで起動しますssh-agent dbus-launcher --exit-with-session i3。これは、SSHエージェントがウィンドウマネージャの前に起動されることを意味します。しかし、Debianは.xsessionrcこれより先にソース化されており、xautolocker起動時にまだSSHエージェントが起動しておらず、ssh-addエージェントと通信するために必要な環境変数もまだ設定されていませんでした。

1つの解決策は、.xinitrc購入する前にエージェントを起動するように変更することです.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

おすすめ記事