ฉันจะทำให้ ssh-agent ทำงานได้ในเทอร์มินัลทั้งหมดได้อย่างไร


27

ฉันได้ตั้งค่าล็อกอินอัตโนมัติ (รหัสผ่านน้อยกว่า) ssh ไปยังเซิร์ฟเวอร์บางเครื่องโดยใช้ ssh-copy-id ssh-agentทำงานได้จากเทอร์มินัลที่ทำงานอยู่เท่านั้น ฉันssh-addจะทำงานในอาคารผู้โดยสารทั้งหมดได้อย่างไร

โดยธรรมชาติแล้วฉันไม่ต้องการคีย์ SSH หากไม่มีข้อความรหัสผ่าน

คำตอบ:


26

หากคุณกำลังเข้าสู่เซสชั่นกราฟิกจัดให้เริ่มssh-agentในช่วงเริ่มต้นเซสชั่นของคุณ การแจกแจงบางอย่างได้ทำเพื่อคุณแล้ว หากไม่มีให้จัดการเพื่อเรียกใช้ssh-agentจากสคริปต์เริ่มต้นเซสชันของคุณหรือจากโปรแกรมจัดการหน้าต่าง การทำเช่นนั้นขึ้นอยู่กับสภาพแวดล้อมเดสก์ท็อปของคุณและตัวจัดการหน้าต่าง ตัวอย่างเช่นถ้าคุณเริ่มต้นจัดการหน้าต่างของคุณด้วยตนเองเพียงแทนที่การเรียกร้องให้โดยmy_favorite_wmssh-agent my_favorite_wm

อย่าเริ่มต้นssh-agentจาก.bashrcหรือ.zshrcเนื่องจากไฟล์เหล่านี้จะถูกดำเนินการโดยเชลล์เชิงโต้ตอบใหม่แต่ละรายการ สถานที่ที่จะเริ่มต้นssh-agentอยู่ในแฟ้มเริ่มต้นเซสชั่นเช่นหรือ.profile.xsession

หากคุณต้องการใช้ตัวแทน SSH เดียวกันในทุกกระบวนการไม่ว่าคุณจะเข้าสู่ระบบจากที่ไหนคุณสามารถทำให้มันใช้ชื่อซ็อกเก็ตเดียวกันได้เสมอแทนที่จะใช้ซ็อกเก็ตที่ตั้งชื่อแบบสุ่ม ตัวอย่างเช่นคุณอาจนำสิ่งนี้ไปไว้ใน~/.profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi

FYI เหตุผลที่ตรวจสอบ$? -ge 2คือเนื่องจากรหัสออก 1 คือเมื่อ ssh-agent ไม่มีคีย์ แต่ ssh-agent กำลังทำงานอยู่
wisbucky

7

คุณอาจต้องการโปรแกรมเช่นKeychainซึ่งออกแบบมาเพื่อวัตถุประสงค์ที่แน่นอนนี้ จากหน้าคน:

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.

ชอบอันนี้มาก!
โคลิน D

ที่ดี! ขอขอบคุณ. ทำงานได้อย่างสมบูรณ์แบบ
ใครบางคน

วิธีนี้ใช้งานได้ดีหลังจากดาวน์โหลดไฟล์บีบอัดจาก Github ให้แน่ใจว่าคุณเพิ่มเส้นทางที่สมบูรณ์ของไดเร็กทอรี keychain-2.8.5 ที่ไม่บีบอัดไปยังพา ธ การส่งออก ~ / .bash_profile PATH = $ PATH: line
Kevin Zhao

4

นำไปใช้กับสภาพแวดล้อมเดสก์ทอปหรือผู้จัดการหน้าต่างของคุณ เมื่อฉันทำสิ่งนี้ด้วยตนเองในอดีตด้วยการกำหนดเอง~/.Xclientsฉันเพิ่งใช้สิ่งนี้เป็นบรรทัดสุดท้าย:

ssh-agent mywindowmanger

อาจมี DE บางตัวที่มีตัวเลือกการตั้งค่าของตัวเองสำหรับสิ่งนี้แม้ว่าจะดูเหมือนว่าฉัน (เช่น) KDE ไม่ได้ ขณะนี้ดูเหมือนว่าเหมืองถูกเรียกใช้รหัสผ่านจาก/etc/X11/xinit/xinitrc-common(สมมุติสิ่งที่ทำจากฟาง) เพราะมันมีการใช้งานสำหรับผู้ใช้ทั้งหมดโดยไม่คำนึงถึง DE / WM และคำสั่งการปกครองเป็น$HOME/.Xclientsแต่ไฟล์ที่ไม่ได้อ้างอิงssh-agent(ในขณะที่/etc/X11/xinit/xinitrc-commonไม่)

หากคุณไม่มี~/.Xclientsคุณสามารถสร้างหนึ่งบรรทัดด้วยบรรทัดนั้น แต่คุณจะต้องรู้คำสั่งที่เริ่ม DE / WM ของคุณ

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