ทำ ssh-add เมื่อ ssh / slogin ถ้ากุญแจไม่ได้อยู่ใน ssh-agent?


10

เมื่อฉันใช้ Gnome, ssh-agent จะเรียกใช้ ssh-add ตาม slogin / ssh หากไม่ได้โหลดข้อมูลประจำตัว ฉันต้องการเลียนแบบพฤติกรรมนี้บนเชลล์ระยะไกล แต่ทุกสิ่งที่ฉันพบแนะนำให้เรียกใช้ ssh-add เมื่อเข้าสู่ระบบ ฉันแค่ต้องการเรียกใช้ ssh-add ถ้าหากฉันรัน slogin / ssh บนเชลล์ระยะไกลไม่ใช่ทุกครั้งที่ฉันเข้าสู่ระบบ

คำตอบ:


9

ฉันหาวิธีแก้ปัญหานี้ผ่าน bash shell

เพิ่มเป็น. bashrc:

check-ssh-add() {
if [ "$DESKTOP_SESSION" == "" ]; then
  if [[ `ssh-add -l` != *id_?sa* ]]; then 
    ssh-add -t 5h  ## 5 hour ssh-agent expiration
  fi
fi
}

slogin() {
check-ssh-add
/usr/bin/slogin $@
}

ssh() {
check-ssh-add
/usr/bin/ssh $@
}

scp() {
check-ssh-add
/usr/bin/scp $@
}

sftp() {
check-ssh-add
/usr/bin/sftp $@
}

7

จริงๆแล้วมันมีวิธีที่ง่ายกว่า ssh-add -lผลตอบแทนจริง (0) ถ้ามีกุญแจและเท็จ (1) มิฉะนั้นดังนั้นฟังก์ชั่นแรกของคุณสามารถถูกแทนที่ด้วยสิ่งนี้:

check-ssh-add() {
  if ! ssh-add -l >/dev/null; then
      ssh-add -t 5h
  fi
}

 


1

ง่ายยิ่งขึ้นใน«นี่คือส่วนเสริมแบบโต้ตอบ»ส่วนเพิ่ม

ssh-add -l &> /dev/null || ssh-add ~/.ssh/my_id

0

รุ่นใหม่ของ OpenSSH สามารถเพิ่มกุญแจสำคัญที่จะเป็นตัวแทนในการใช้งานครั้งแรกหากคุณเปิดใช้งานในของคุณAddKeysToAgent yes~/.ssh/config

(ฉันได้เรียนรู้สิ่งนี้จากhttps://superuser.com/a/1114257/42546ฉันไม่แน่ใจว่ามารยาท StackOverflow ที่เหมาะสมคืออะไรสำหรับการรับมือกับคำตอบในเว็บไซต์ StackExchange ต่างๆ)

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