gnome-keyring
SSH 에이전트 역할 에서 벗어나려고 합니다 .
내가 한 일들
- 몇 시간 동안 인터넷을 검색했습니다.
- 상황을 변경하고 자주 다시 시작하십시오.
- 마지막으로
rm
모든 SSH 관련 자동 시작 항목을 -ed했습니다.
마지막 일은 마술처럼 이루어졌습니다.더이상프록시 소켓:
/run/user/[uid]/keyring/ssh
질문
남은 질문은하지만위에서 언급한 놀라운 결과를 얻었습니다.무엇gnome-keyring
아직도 설정을 고집 하고 있습니다 SSH_AUTH_SOCK
.지금 존재하지 않는위의 소켓. 좀비처럼 이것들도 결코 죽지 않습니다.
질문
이 변수를 설정하는 목적은 무엇이며 어디서 수행됩니까?
덫
- 그래요아니요이 변수를 다른 값으로 재설정하는 방법을 묻습니다.
- 그래요아니요시스템 전체 또는 셸 구성 파일에서 값을 설정하는 방법을 묻습니다.
- 그래요아니요무엇이든 고정, 설정, 재설정, 설정 해제 또는 교체하려면 초기화 스크립트 부두 주문이 필요합니다.
- 그래요아니요이 항목을 제거하는 방법에 대한 조언 요청: 여전히 내 비밀번호에 이 항목이 필요하며 Gnome에서 가장 통합되고 완벽한 비밀번호 관리자인 것 같습니다.
그 기능이 비활성화되었으면 좋겠습니다.
답변1
추측해 보겠습니다. 귀하는 Wayland를 사용하고 있습니다. 오늘 이 문제가 발생하여 해결책을 공유하고 싶었습니다.
SSH_AUTH_SOCK
어떤 이유로 Gnome-Session에는 웨이랜드 아래에 대한 하드코딩된 재정의가 있습니다. 아래 커밋을 참조하세요.https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae
해결책? 이 동작을 비활성화하려면 환경 변수를 설정하십시오: GSM_SKIP_SSH_AGENT_WORKAROUND=1
. 이로 인해 환경 설정 코드가 단락됩니다.
이 문제를 발견하고 ssh-agent를 구성하려는 사람을 위해: ssh-agent에 대한 systemd 장치 파일에 다음 줄이 있습니다.
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
답변2
(OP의 환경을 알 수 없으므로 여기에 제공된 경로는 내 Ubuntu 컴퓨터에서 찾은 경로입니다)
gnome-keyring은 SSH_AUTH_SOCK를 어디에 설정합니까?
/usr/share/upstart/sessions/gnome-keyring-ssh.conf
제목의 주요 질문에 답하기 위해 SSH_AUTH_SOCK는 다음 명령을 사용하여 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로 대체됩니다. 따라서 /run/user/.../keyring-.../ssh
애플리케이션이 ssh-agent 대신 통신할 수 있도록 자체 소켓으로 SSH_AUTH_SOCK를 재정의합니다 .
비활성화하는 방법
이제 마지막 문장인 "저것을 비활성화하고 싶습니다"에 답해 보겠습니다. OP가 원하는 것은 gnome-keyring의 ssh 구성 요소가 SSH_AUTH_SOCK를 재정의하지 못하도록 비활성화하는 것입니다. 그들은 원래 ssh-agent에 의해 설정된 "실제" SSH_AUTH_SOCK 변수를 되찾고 싶어합니다.
ssh 구성 요소는 위에서 언급한 것과 동일한 시작 스크립트( )에 의해 시작되며 한 가지 조건은 다음 파일에서 /usr/share/upstart/sessions/gnome-keyring-ssh.conf
문자열을 찾을 수 없다는 것입니다.X-GNOME-Autostart-enabled=false
- (시스템 전체 회의)
/etc/xdg/autostart/gnome-keyring-ssh.desktop
- (사용자 구성)
~/.config/autostart/gnome-keyring-ssh.desktop
따라서 이를 비활성화하려면 파일 중 하나에 한 줄을 추가하기만 하면 됩니다. 가급적이면 X-GNOME-Autostart-enabled=false
HOME 디렉터리에 한 줄을 추가하는 것이 좋습니다.
답변3
https://wiki.archlinux.org/index.php/GNOME/Keyring#Disable_keyring_daemon_comComponents
대체 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
답변4
Gnome 3.18부터 소켓은 다음 위치에 저장되는 것으로 보입니다.~/.cache/keyring-(some random string)/ssh
아마도 gnome-keyring-daemon에 의해 설정되었을 것입니다.