Trường hợp gnome-keyring đặt $ SSH_AUTH_SOCK?


10

Tôi đang trong quá trình loại bỏ gnome-keyringnhư một đại lý SSH.

Những việc tôi đã làm

  • Tìm kiếm trên internet hàng giờ.
  • Thay đổi công cụ và khởi động lại, thường xuyên.
  • Cuối cùng chỉ cần rmtất cả các công cụ tự động khởi động liên quan đến SSH.

Điều cuối cùng đã làm việc một cách kỳ diệu vì không còn ổ cắm cho các đại lý ở đó:

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

Vấn đề

Vấn đề còn lại là mặc dù có được của tôi là kết quả nói trên tuyệt vời, một cái gì đó trong gnome-keyringvẫn khăng khăng lập SSH_AUTH_SOCKđến nay không tồn tại ổ cắm ở trên. Nó giống như thây ma, những thứ này không bao giờ chết.

Câu hỏi

Cài đặt biến đó là gì và được thực hiện ở đâu?

Cạm bẫy

  • Tôi không hỏi làm thế nào tôi có thể đặt lại biến đó thành giá trị khác.
  • Tôi không hỏi làm thế nào tôi có thể đặt giá trị đó trên toàn hệ thống hoặc trong tệp cấu hình shell.
  • Tôi không yêu cầu một số câu thần chú voodoo init-script để đóng băng, thiết lập, thiết lập lại, bỏ đặt hoặc thay thế bất cứ điều gì.
  • Tôi không yêu cầu lời khuyên về cách gỡ cài đặt thứ này: Tôi vẫn cần nó cho mật khẩu của mình và nó dường như là trình quản lý mật khẩu được tích hợp và đánh bóng nhất trong Gnome.

Tôi muốn thứ đó bị vô hiệu hóa như nó phải được.


2
Gỡ cài đặt gnome-keyring?
rudimeier

1
@rudimeier: Tôi vẫn cần khóa gnome cho mật khẩu của mình và theo như tôi biết thì không có gì được đánh bóng và tích hợp hơn trong Gnome.
JohnW

@rudimeier thậm chí điều đó dường như không có ích. Tôi đã thử nó.
André Borie

Câu trả lời:


8

Hãy để tôi đoán - bạn đang sử dụng Wayland. Tôi gặp vấn đề này ngày hôm nay và nhận ra tôi muốn chia sẻ giải pháp.

SSH_AUTH_SOCKVì một số lý do, Gnome có phiên bản ghi đè được mã hóa cứng. Xem cam kết sau: https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

Cách giải quyết? Đặt một biến môi trường để vô hiệu hóa hành vi này : GSM_SKIP_SSH_AGENT_WORKAROUND=1. Điều này ngắn mạch mã cài đặt môi trường.

Đối với những người tìm thấy điều này cũng đang cố gắng định cấu hình ssh-agent: Trong tệp đơn vị systemd của tôi cho ssh-agent, tôi có dòng sau:

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

Các tập tin đầy đủ trông như thế này:

[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

Cảm ơn! Trên Ubuntu v17.10 Artful Aardvark, chỉ cần thêm export GSM_SKIP_SSH_AGENT_WORKAROUND=1vào ~ / .profile của tôi và khởi động lại đã sửa cấu hình của tôi trước đây hoạt động trên v17.04.
Stephen Niedzielski

Điều này dường như ảnh hưởng nhiều hơn đến Wayland, tôi đã gặp phải vấn đề này khi cố gắng sử dụng gnome-flashback + i3.
dragon788

Xin lưu ý rằng hack hoạt động cho đến khi Gnome 3.24 trở lên ( wiki.archlinux.org/index.php/GNOME/ mẹo )
Pablo Olmos de Aguilera C.

5

(Không biết môi trường của OP, vì vậy các đường dẫn được đưa ra ở đây là những đường dẫn được tìm thấy trên máy Ubuntu của tôi)

Trường hợp gnome-keyring đặt SSH_AUTH_SOCK ở đâu?

Để trả lời câu hỏi chính trong tiêu đề, SSH_AUTH_SOCK được đặt bởi gnome-keyring /usr/share/upstart/sessions/gnome-keyring-ssh.confbằng lệnh sau:

initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK

Trích dẫn initctlhướng dẫn sử dụng:

initctl set-env VARIABLE[=VALUE]

Thêm hoặc cập nhật một biến trong bảng môi trường công việc. Các biến được đặt theo cách này sẽ áp dụng cho tất cả các quy trình bắt đầu sau đó cho một công việc.

-g, --global

Hoạt động trên bảng môi trường công việc toàn cầu và tất cả các bảng môi trường công việc đang chạy.

SSH_AUTH_SOCK đến từ đâu ngay từ đầu?

Các initctllệnh trên là điều kiện để thực tế là biến môi trường SSH_AUTH_SOCK đã tồn tại. Vì vậy, nó là một tình huống gà và trứng? Những gì thiết lập nó?

SSH_AUTH_SOCK ban đầu được đặt bởi tác nhân ssh gốc được bắt đầu vào đầu phiên X. Trích dẫn hướng dẫn sử dụng:

Một socket miền UNIX được tạo và tên của socket này được lưu trong SSH_AUTH_SOCKbiến môi trường. Ổ cắm chỉ được truy cập cho người dùng hiện tại.

NHƯNG, những gì thành phần ssh của gnome-keyring làm là thay thế chính nó với tác nhân ssh hiện có. Do đó, nó ghi đè SSH_AUTH_SOCK bằng ổ cắm riêng /run/user/.../keyring-.../sshđể các ứng dụng nói chuyện với nó chứ không phải cho ssh-agent.

Làm thế nào để vô hiệu hóa nó

Bây giờ, hãy trả lời câu cuối cùng "Tôi muốn thứ đó bị vô hiệu hóa". Điều OP muốn là vô hiệu hóa việc ghi đè SSH_AUTH_SOCK bởi thành phần ssh trong gnome-keyring. Họ muốn lấy lại biến SSH_AUTH_SOCK "thật" ban đầu được đặt bởi ssh-agent.

Thành phần ssh được khởi động bởi cùng một tập lệnh khởi động được đề cập ở trên ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf) nhưng với một điều kiện: chuỗi X-GNOME-Autostart-enabled=falsekhông được tìm thấy trong một trong hai tệp sau:

  • (conf toàn hệ thống) /etc/xdg/autostart/gnome-keyring-ssh.desktop
  • (người dùng conf) ~/.config/autostart/gnome-keyring-ssh.desktop

Do đó, nếu bạn muốn tắt nó, tất cả những gì bạn phải làm là thêm một dòng X-GNOME-Autostart-enabled=falsevào một trong những tệp này, tốt nhất là một trong thư mục HOME của bạn.


Tôi đã thử vô hiệu hóa các mục tự khởi động cho khóa Gnome và có vẻ như biến vẫn còn đó, nhưng chỉ vào một ổ cắm không tồn tại (vì vậy vô hiệu hóa khóa hoạt động, nhưng biến được đặt ở một nơi khác). Tôi đang chạy một máy Archlinux vì vậy không có sự khởi đầu và không có gì rõ ràng trong systemd sẽ đặt biến ..
André Borie

@ AndréBorie Tôi không biết Arch cũng không systemd. Giá trị mới của đường dẫn ổ cắm là gì? Trên macihne của tôi, ssh-agent thường đặt nó thành /tmp/ssh-XXX/agent.PID. Ssh-agent vẫn còn trong danh sách quy trình của bạn?
xhienne

Đường dẫn giống như trong câu hỏi ban đầu. Không có tác nhân SSH cũng như dây móc khóa đang chạy.
André Borie

Câu trả lời này thực sự cũ nhưng tôi hy vọng bạn cũng có thể giúp tôi unix.stackexchange.com/questions/422574/ Kẻ
Ojs

3

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

Nếu bạn muốn chạy một tác nhân SSH thay thế (ví dụ: ssh-agent hoặc gpg-agent, bạn cần phải vô hiệu hóa thành phần ssh của Khóa Gnome. Để thực hiện theo cách tài khoản cục bộ:

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

Sau đó đăng xuất.

Chỉnh sửa nhẹ, loại bỏ việc sử dụng dường như vô dụng printf


Điều này cũng hoạt động với tôi trên Ubuntu 14.04.
pts

Điều này đúng với 3.24 và mới hơn.
Pablo Olmos de Aguilera C.

0

Kể từ Gnome 3.18, ổ cắm dường như được lưu trữ trong ~/.cache/keyring-(some random string)/ssh

Theo phỏng đoán, nó được đặt bởi gnome-keyring-daemon.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.