그놈 키링은 어디에 $ SSH_AUTH_SOCK를 설정합니까? 에이전트로 제거하는 중 입니다. 내가 한

gnome-keyringSSH 에이전트로 제거하는 중 입니다.

내가 한 것들

  • 몇 시간 동안 인터넷을 검색했습니다.
  • 물건을 바꾸고 자주 다시 시작했습니다.
  • 마지막으로 rmSSH와 관련된 모든 자동 시작 항목을 -ed했습니다.

에이전트의 소켓 이 더 이상 없기 때문에 마지막으로 마술처럼 작동했습니다 .

/run/user/[uid]/keyring/ssh

문제

나머지 문제는 점이다 에도 불구하고 나의 멋진 상기 결과를 얻을, 뭔가gnome-keyring여전히이 설정에 대한 주장 SSH_AUTH_SOCK받는 지금 존재하지 않는 이상 소켓. 좀비와 비슷합니다. 이런 것들은 절대 죽지 않습니다.

질문

해당 변수를 설정하는 것은 무엇이며 어디에서 수행됩니까?

함정

  • 나는 하지 내가 다른 값으로 그 변수를 재설정 할 수있는 방법을 물어.
  • 나는 하지 나는 시스템 전체 또는 쉘 설정 파일에 값을 설정하는 방법 질문.
  • 나는 init-script voodoo incantations를 고정, 설정, 재설정, 설정 해제 또는 대체 할 것을 요구 하지 않습니다 .
  • 나는 물건을 제거하는 방법에 대한 조언을 요구 하지 않습니다 . 암호에 여전히 암호가 필요하며 Gnome에서 가장 통합되고 세련된 암호 관리자 인 것 같습니다.

나는 그 기능을 그대로 사용해야합니다.



답변

당신이 Wayland를 사용하고 있습니다. 나는 오늘이 문제에 부딪 쳤고 해결책을 공유 할 것이라고 생각했다.

Gnome-Session에는 SSH_AUTH_SOCK어떤 이유로 든 언더 랜드에 하드 코딩 된 재정의가 있습니다 . 다음 커밋을 참조하십시오 : https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

해결 방법? 이 동작을 비활성화하려면 환경 변수를 설정하십시오 GSM_SKIP_SSH_AGENT_WORKAROUND=1. 이것은 환경 설정 코드를 단락시킵니다.

ssh-agent도 구성하려고하는 사람들을 위해 : ssh-agent의 시스템 단위 파일에 다음 줄이 있습니다.

ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

전체 파일은 다음과 같습니다.

[Unit]
Description=SSH Agent
IgnoreOnIsolate=true

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

[Install]
WantedBy=default.target

답변

(OP의 환경은 알려지지 않았으므로 여기에 주어진 경로는 내 우분투 컴퓨터에서 찾은 경로입니다)

그놈 키링은 어디에서 SSH_AUTH_SOCK를 설정합니까?

주요 질문 제목에 대답하기 위해 SSH_AUTH_SOCK는 /usr/share/upstart/sessions/gnome-keyring-ssh.conf다음 명령 으로 gnome-keyring에 의해 설정됩니다 .

initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK

initctl매뉴얼 인용 :

initctl set-env VARIABLE[=VALUE]

작업 환경 테이블에서 변수를 추가하거나 업데이트합니다. 이러한 방식으로 설정된 변수는 작업의 모든 후속 시작 프로세스에 적용됩니다.

-g, --global

글로벌 작업 환경 테이블 및 기존의 모든 실행중인 작업 환경 테이블에서 작동하십시오.

SSH_AUTH_SOCK는 처음부터 어디에서 왔습니까?

initctl위 의 명령은 환경 변수 SSH_AUTH_SOCK가 이미 존재한다는 사실을 조건으로합니다. 닭과 계란 상황인가요? 무엇을 설정합니까?

SSH_AUTH_SOCK는 X 세션의 맨 처음에 시작되는 원래 ssh-agent에 의해 초기에 설정됩니다. 매뉴얼 인용 :

UNIX 도메인 소켓이 작성되고이 소켓의 이름이 SSH_AUTH_SOCK환경 변수에 저장됩니다 . 소켓은 현재 사용자 만 액세스 할 수 있습니다.

그러나 gnome-keyring의 ssh 구성 요소는 기존 ssh-agent를 대신합니다. 따라서 자체 소켓으로 SSH_AUTH_SOCK를 덮어 써서 /run/user/.../keyring-.../ssh응용 프로그램이 ssh-agent가 아닌 소켓과 통신하도록합니다.

비활성화하는 방법

자, 마지막 문장 “나는 그 일을 비활성화하고 싶다”라고 대답합시다. OP가 원하는 것은 gnome-keyring의 ssh 구성 요소에 의한 SSH_AUTH_SOCK 덮어 쓰기를 비활성화하는 것입니다. 그들은 처음에 ssh-agent에 의해 설정된 “true”SSH_AUTH_SOCK 변수를 되 찾으려고합니다.

ssh 구성 요소는 위에서 언급 한 동일한 시작 스크립트 ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf)에 의해 시작 되지만 한 가지 조건에서 시작 X-GNOME-Autostart-enabled=false합니다. 다음 파일 중 하나에서 문자열을 찾을 수 없습니다.

  • (시스템 전체의 conf) /etc/xdg/autostart/gnome-keyring-ssh.desktop
  • (사용자 conf) ~/.config/autostart/gnome-keyring-ssh.desktop

따라서,이를 사용 불가능 X-GNOME-Autostart-enabled=false하게하려면,이 파일 중 하나, 바람직하게는 HOME 디렉토리에있는 하나 의 행 을 추가 하기 만하면됩니다.


답변

https://wiki.archlinux.org/index.php/GNOME/Keyring#Disable_keyring_daemon_components

다른 SSH 에이전트 (예 : ssh-agent 또는 gpg-agent)를 실행하려면 GNOME Keyring의 ssh 구성 요소를 비활성화해야합니다.

mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop

그런 다음 로그 아웃하십시오.

약간 쓸모없는 사용을 제거하여 가볍게 편집 printf


답변

그놈 3.18부터 소켓은 ~/.cache/keyring-(some random string)/ssh

짐작할 수 있겠지만, 그놈 키링 데몬에 의해 설정됩니다.