.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스크립트 의 기능 중 하나는 ssh-add -D실행 중인 SSH 에이전트에서 모든 SSH 키를 제거하는 것입니다. 그러나 xautolock이는 생성될 때 작동하지 않습니다 .xsessionrc. ssh-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 에이전트보다 먼저 시작하기 때문에 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

관련 정보