gnome-keyring ตั้งค่า $ SSH_AUTH_SOCK ไว้ที่ไหน


10

ฉันอยู่ระหว่างการกำจัดในgnome-keyringฐานะตัวแทน SSH

สิ่งที่ฉันทำ

  • ค้นหาอินเทอร์เน็ตเป็นเวลาหลายชั่วโมง
  • เปลี่ยนสิ่งแล้วเริ่มใหม่บ่อยครั้ง
  • ในที่สุดก็เพิ่งrmจะเริ่มต้นอัตโนมัติทุกสิ่งที่เกี่ยวข้องกับ SSH

สิ่งสุดท้ายที่ใช้งานได้อย่างน่าอัศจรรย์เพราะไม่มีเบ้าสำหรับตัวแทนที่นั่นอีก:

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

ปัญหา

ปัญหาที่เหลืออยู่ก็คือว่าทั้งๆที่ของการได้รับผลดังกล่าวข้างต้นที่ยอดเยี่ยมของฉันบางสิ่งบางอย่างในgnome-keyringยังคงยืนยันในการตั้งค่าSSH_AUTH_SOCKไปยังตอนนี้ ไม่ใช่ที่มีอยู่ซ็อกเก็ตดังกล่าวข้างต้น มันเหมือนกับซอมบี้สิ่งเหล่านี้ไม่มีวันตาย

คำถาม

การตั้งค่าตัวแปรนั้นคืออะไรและทำที่ไหน?

ผิดพลาด

  • ฉันไม่ได้ถามว่าจะรีเซ็ตตัวแปรนั้นเป็นค่าอื่นได้อย่างไร
  • ฉันไม่ได้ถามว่าฉันสามารถตั้งค่าทั้งระบบหรือในไฟล์การกำหนดค่าเชลล์ได้อย่างไร
  • ฉันไม่ได้ขอคาถาวูดูสคริปต์บางตัวเพื่อหยุดการตั้งค่ารีเซ็ตยกเลิกการตั้งค่าหรือแทนที่สิ่งใด ๆ
  • ฉันไม่ได้ขอคำแนะนำเกี่ยวกับวิธีถอนการติดตั้ง: ฉันยังต้องการรหัสผ่านของฉันและดูเหมือนว่าจะเป็นตัวจัดการรหัสผ่านที่สมบูรณ์แบบที่สุดใน Gnome

ฉันต้องการสิ่งที่ปิดการใช้งานตามที่ควรจะเป็น


2
ถอนการติดตั้ง gnome-keyring หรือไม่
rudimeier

1
@rudimeier: ฉันยังต้องการ gnome-keyring สำหรับรหัสผ่านของฉันและเท่าที่ฉันรู้ว่าไม่มีอะไรที่ขัดและรวมใน Gnome
JohnW

@rudimeier แม้ดูเหมือนจะไม่ช่วยก็ตาม ฉันลองแล้ว
André Borie

คำตอบ:


8

ให้ฉันเดา - คุณกำลังใช้ Wayland ฉันพบปัญหานี้ในวันนี้และคิดว่าฉันจะแบ่งปันวิธีแก้ปัญหา

Gnome-Session มีการแทนที่ hardcoded สำหรับSSH_AUTH_SOCKภายใต้ wayland ด้วยเหตุผลบางอย่าง ดูการกระทำดังต่อไปนี้: https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

วิธีแก้ปัญหา? GSM_SKIP_SSH_AGENT_WORKAROUND=1ตั้งค่าตัวแปรสภาพแวดล้อมที่จะปิดการใช้งานลักษณะการทำงานนี้: วงจรนี้สั้นรหัสการตั้งค่าสภาพแวดล้อม

สำหรับผู้ที่พบสิ่งนี้ที่พยายามกำหนดค่า ssh-agent ด้วย: ในไฟล์ systemd unit ของฉันสำหรับ 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

ขอบคุณ! บน Ubuntu v17.10 Artful Aardvark เพียงเพิ่มexport GSM_SKIP_SSH_AGENT_WORKAROUND=1~ / .profile และการรีบูตเครื่องของฉันแก้ไขการกำหนดค่าของฉันที่เคยใช้กับ v17.04
Stephen Niedzielski

ดูเหมือนว่าจะมีผลกระทบมากกว่าแค่ Wayland ฉันได้พบเจอปัญหานี้เมื่อพยายามใช้ gnome-flashback + i3
dragon788

โปรดทราบว่าการแฮ็กนั้นใช้งานได้จนถึง Gnome 3.24 ขึ้นไป ( wiki.archlinux.org/index.php/GNOME/ … )
Pablo Olmos de Aguilera C.

5

(ไม่ทราบสภาพแวดล้อมของ OP ดังนั้นเส้นทางที่ระบุในที่นี้คือสิ่งที่พบในเครื่อง Ubuntu ของฉัน)

gnome-keyring ตั้ง SSH_AUTH_SOCK ที่ไหน

เพื่อตอบคำถามหลักในชื่อ SSH_AUTH_SOCK ถูกตั้งค่าโดย gnome-keyring /usr/share/upstart/sessions/gnome-keyring-ssh.confด้วยคำสั่งต่อไปนี้:

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 เริ่มแรกถูกตั้งค่าโดย ssh-agent ดั้งเดิมซึ่งเริ่มต้นที่จุดเริ่มต้นของเซสชัน X การอ้างอิงคู่มือ:

ซ็อกเก็ตโดเมน UNIX ถูกสร้างขึ้นและชื่อของซ็อกเก็ตนี้จะถูกเก็บไว้ในSSH_AUTH_SOCKตัวแปรสภาพแวดล้อม ซ็อกเก็ตนั้นเข้าถึงได้โดยผู้ใช้ปัจจุบันเท่านั้น

แต่สิ่งที่องค์ประกอบ ssh ของ gnome-keyring คือการแทนที่ตัวเองไปยังตัวแทน ssh ที่มีอยู่ ดังนั้นจึงเขียนทับ SSH_AUTH_SOCK ด้วยซ็อกเก็ตของตัวเอง/run/user/.../keyring-.../sshเพื่อให้แอปพลิเคชันพูดคุยกับมันและไม่พูดถึง ssh-agent

วิธีการปิดการใช้งาน

ตอนนี้เราจะตอบประโยคสุดท้ายว่า "ฉันต้องการให้มันปิดการใช้งาน" สิ่งที่ OP ต้องการคือปิดใช้งานการเขียนทับ SSH_AUTH_SOCK โดยองค์ประกอบ ssh ใน gnome-keyring พวกเขาต้องการกลับตัวแปร "จริง" SSH_AUTH_SOCK ที่กำหนดโดย ssh-agent

คอมโพเนนต์ 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หนึ่งในไฟล์เหล่านี้โดยเฉพาะอย่างยิ่งหนึ่งในไดเรกทอรีบ้านของคุณ


ฉันได้ลองปิดการใช้งานรายการ autostart สำหรับ Gnome keyring และดูเหมือนว่าตัวแปรยังอยู่ที่นั่น แต่ชี้ไปยังซ็อกเก็ตที่ไม่มีอยู่ (ดังนั้นการปิดใช้งาน keyring ทำงาน แต่ตัวแปรถูกตั้งค่าไว้ที่อื่น) ฉันใช้เครื่อง Archlinux ดังนั้นจึงไม่มีการพุ่งพรวดและไม่มีอะไรที่ชัดเจนใน systemd ที่จะตั้งค่าตัวแปร ..
André Borie

@ AndréBorieฉันรู้ทั้ง Arch และ systemd ค่าใหม่ของเส้นทางซ็อกเก็ตคืออะไร? เมื่อวันที่ macihne ของฉันตัวแทน ssh /tmp/ssh-XXX/agent.PIDโดยทั่วไปแล้วชุดมันไป ssh-agent ยังคงอยู่ในรายการกระบวนการของคุณหรือไม่
xhienne

เส้นทางเป็นเหมือนคำถามเดิม ไม่มีเอเจนต์ SSH หรือ keyrings กำลังทำงานอยู่
André Borie

คำตอบนี้เก่ามาก แต่ฉันหวังว่าคุณสามารถช่วยฉันได้เช่นกันunix.stackexchange.com/questions/422574/ …
Ojs

3

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

ถ้าคุณต้องการเรียกใช้ตัวแทน SSH อื่น (เช่น ssh-agent หรือ gpg-agent คุณต้องปิดการใช้งานส่วนประกอบ ssh ของพวงกุญแจ GNOME ในการทำเช่นนั้นด้วยวิธีบัญชีท้องถิ่น:

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

จากนั้นออกจากระบบ

แก้ไขเบา ๆ เอาการใช้งานที่ไร้ประโยชน์อย่างเห็นได้ชัด printf


สิ่งนี้ใช้ได้กับฉันใน Ubuntu 14.04 ด้วย
จุด

สิ่งนี้เป็นจริงสำหรับ 3.24 และใหม่กว่า
Pablo Olmos de Aguilera C.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.