ตัวแทน SSH สูญเสียข้อมูลประจำตัวในขณะที่รีสตาร์ทเครื่อง


10

หลังจากสร้างคีย์ด้วยชื่อid_rsaที่เป็นตำแหน่งเริ่มต้น ฉันกำลังเพิ่มข้อมูลประจำตัวให้กับตัวแทน SSH พร้อมคำสั่งssh-add ~/.ssh/id_rsaการเพิ่มสำเร็จแล้ว

ฉันสามารถ SSH ได้โดยไม่ต้องใส่รหัสผ่านของรหัสเพราะมันมีตัวแทน SSH อยู่แล้ว

แต่เมื่อฉันเริ่มการทำงานของเครื่องหรือเซิร์ฟเวอร์และจากนั้นตรวจสอบตัวตนที่มีคำสั่งฉันได้รับข้อความเช่นssh-add -LThe agent has no identities

นั่นหมายความว่าเมื่อเรารีสตาร์ทเครื่อง Agent สูญเสียข้อมูลประจำตัวหรือไม่ นี่เป็นพฤติกรรมปกติหรือบางสิ่งที่ฉันขาดหายไปที่นี่

ได้โปรดแนะนำฉันฉันไม่คุ้นเคยกับ SSH มากนัก


ดูกระทู้นี้บนเว็บไซต์ Unix & Linux
janosdivenyi

คำตอบ:


11

เป็นเรื่องปกติ วัตถุประสงค์ของเอเจนต์คีย์คือเพื่อเก็บคีย์ถอดรหัสในหน่วยความจำแต่มันจะไม่เขียนลงในดิสก์ (นั่นจะทำลายวัตถุประสงค์ - ทำไมไม่เพียง แต่ป้องกันคีย์หลักแทน)

ดังนั้นคีย์จะต้องถูกปลดล็อคในการเข้าสู่ระบบแต่ละครั้งและคุณต้องดำเนินการนี้โดยอัตโนมัติ - บน Linux ที่ใช้pam_sshเป็นตัวเลือกเดียว มันจะใช้รหัสผ่านระบบปฏิบัติการของคุณโดยอัตโนมัติเพื่อปลดล็อกตัวแทน อีกโมดูลที่คล้ายกันคือpam_envoyซึ่งเป็น Afaik ที่เชื่อถือได้มากขึ้นเล็กน้อย (แต่ต้องใช้ systemd)

ทั้งสองโมดูลจะสตาร์ทเอเจนต์เองและโหลดคีย์โดยอัตโนมัติ


ความคิดใดวิธีการโดยอัตโนมัติใน terminal mac osx?
Niks

เมื่อฉันรันคำสั่ง $SSH_AUTH_SOCK ฉันได้รับผลลัพธ์เป็น:: -bash: /tmp/ssh-gT43vE99vk/agent.511ปฏิเสธสิทธิ์ฉันสับสนที่นี่ .. พยากรณ์อากาศตัวแทนของฉันที่ส่งต่อการทำงานหรือไม่ .. คุณช่วยแนะนำได้ไหม?
Niks

มันไม่ได้มีไว้เพื่อใช้เป็นคำสั่ง - มันเป็นตัวแปรสิ่งที่คุณใช้เป็นส่วนหนึ่งของคำสั่งอื่น ตัวอย่างเช่นecho $SSH_AUTH_SOCKการพิมพ์ค่า
grawity

เฮ้เพื่อน .. ความคิดใด? stackoverflow.com/questions/31916395/…
Niks

3

ลองทำเช่นนี้กับ~ / .bashrcของคุณ:

if [ ! -S ~/.ssh/id_rsa ]; then
  eval `ssh-agent`
  ln -sf "$SSH_AUTH_SOCK" ~/.ssh/id_rsa
  ssh-add
fi
export SSH_AUTH_SOCK=~/.ssh/id_rsa

สิ่งนี้ควรถามรหัสผ่านเมื่อคุณเข้าสู่ระบบแล้วเท่านั้น


ขอบคุณสำหรับการตอบกลับนั่นหมายถึงตัวแทน SSH ทำงานได้อย่างถูกต้อง และหลังจากเพิ่มสิ่งนี้แล้วคุณไม่จำเป็นต้องเพิ่มข้อมูลประจำตัวทุกครั้งเมื่อเปิดเครื่อง? ขออภัยถ้านี่เป็นคำถามที่โง่ แต่ฉันใหม่มากกับ ssh
Niks

หากคุณ ssh มีรหัสผ่านมันจะแจ้งให้ทุกครั้งที่คุณเข้าสู่ระบบ
Shiro

คำตอบนี้เป็นอันตราย ถ้าคุณทำในสิ่งที่มันพูดมันจะลบกุญแจส่วนตัวของคุณ หากคุณไม่มีวิธีอื่นในการตรวจสอบสิทธิ์คุณจะสูญเสียการเข้าถึงระบบที่คุณใช้การพิสูจน์ตัวตนด้วยรหัสสาธารณะ
kasperd

2

บน OS X ssh-add มีการตั้งค่าสถานะพิเศษเพื่อเชื่อมต่อกับ Keychain ถ้าคุณตัดสินใจที่จะเก็บกุญแจส่วนตัวของคุณ

ssh-add -K ~/.ssh/id_rsaเพียงแค่เรียกใช้

ฉันเชื่อว่าสิ่งนี้จะตอบคำถามของคุณได้อย่างสมบูรณ์ยิ่งขึ้น การตั้งค่าสถานะเฉพาะ OS X นี้ยากที่จะค้นหาเอกสารประกอบ แต่ใช้งานได้ตั้งแต่ OS X Leopard เป็นอย่างน้อย


2
นี่คือคำตอบที่เหมาะสมแล้วตามด้วยssh-add -Aซึ่งจะเพิ่มปุ่มทั้งหมดใน Keychain นอกจากนี้สร้าง~/.ssh/configและเพิ่มUseKeychain yesเพื่อให้ macOS จะรักษาคีย์ของคุณตามที่อธิบายไว้ที่นี่: unix.stackexchange.com/questions/140075//
lucasarruda

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