xautolock
나는 일정 시간 동안 활동이 없으면 화면을 잠그고 노트북을 일시 중지하는 습관이 있습니다 . 이것은 훌륭하게 작동합니다. 이는 다음 xautolock
으로 시작됩니다 .xsessionrc
.
xautolock -time 60 -detectsleep -locker '~/bin/lockscreen --suspend' &
이 ~/bin/lockscreen
스크립트 의 기능 중 하나는 ssh-add -D
실행 중인 SSH 에이전트에서 모든 SSH 키를 제거하는 것입니다. 그러나 xautolock
이는 생성될 때 작동하지 않습니다 .xsessionrc
. ssh-add -D
명령은 인증 프록시와 통신할 수 없다고 불평합니다.
그러나 ssh-add -D
터미널에서 이 작업을 잘 수행할 수 있으며 pkill xautolock
터미널에서 명령을 실행 하면 xautolock
모든 것이 예상대로 작동합니다..xsessionrc
SSH 에이전트와의 대화를 ssh-add -D
통해 프로세스를 생성할 수 없는데 일반 터미널을 통해서는 생성할 수 있는 이유는 무엇입니까?xautolock
.xsessionrc
ssh-add -D
xautolock
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
내 유일한 이론은 xautolock
SSH 에이전트보다 먼저 시작하기 때문에 fork ssh-add
명령이 에이전트의 존재를 알지 못한다는 것입니다. 그러나 그것은 이상하게 보입니다.
답변1
X 창 관리자는 명령을 통해 시작됩니다 ssh-agent dbus-launcher --exit-with-session i3
. 이는 SSH 에이전트가 창 관리자보다 먼저 시작된다는 의미입니다. 하지만 Debian은 .xsessionrc
이보다 먼저 소스화되어 있어서 xautolocker
부팅 시 아직 SSH 에이전트가 시작되지 않았고, ssh-add
에이전트와 통신하는데 필요한 환경 변수도 아직 설정되지 않은 상태였습니다.
한 가지 해결책은 .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