macOS 10.12 Sierra จะไม่ลืมรหัสผ่านของฉัน ssh keyfile


25

หลังจากสร้างid-rsaไฟล์คีย์เข้ารหัสใหม่ด้วยssh-keygenและใช้เป็นครั้งแรกฉันไม่สามารถรับ macOS เพื่อลืมข้อความรหัสผ่าน นี่คล้ายกับวิธีทำให้ OS X จำคำถามรหัสผ่านคีย์ ssh ไม่ได้แต่แย่กว่านั้น

ฉันพยายามรีบูต, ฆ่าssh-agent, ล็อคกุญแจทั้งหมดของฉัน แต่มันก็ยังดูเหมือนว่าจะถูกเก็บไว้ที่ใดที่หนึ่ง อย่างไรก็ตามฉันไม่พบมันในพวงกุญแจใด ๆ ดูเหมือนว่าจะไม่ปลอดภัยมาก คำตอบสำหรับรหัสผ่านส่วนตัวคีย์ SSH ไม่เคยถูกลบด้วย Keychain / ssh-agentเช่นกัน

ในความเป็นจริงกล่องโต้ตอบที่เคยปรากฏถามคุณว่าคุณต้องการเก็บข้อความรหัสผ่านหรือไม่ดูเหมือนไม่มีอยู่อีกต่อไป


คุณตรวจสอบว่ามันได้รับการเข้ารหัสจริงหรือไม่?
John Keates

ใช่. ค่อนข้างแน่ใจว่ามันเป็น ssh จะขอรหัสผ่านในครั้งแรกที่ฉันใช้มัน ใครบางคนสามารถทำซ้ำสิ่งนี้ได้จริงหรือ
hogliux

มันทำงานด้วยวิธีการตั้งค่าของฉันเช่นกันมันเป็นวิธีการกำหนดค่า ssh / ssh-agent
John Keates

เป็นเรื่องจริงถ้าคุณคลิกที่ช่องทำเครื่องหมายเพื่อบอก macOS เพื่อจัดเก็บวลีรหัสผ่านในพวงกุญแจ อย่างไรก็ตามหากคุณไม่คลิกที่ช่องทำเครื่องหมาย macOS ควรถามวลีรหัสผ่านเสมอ แต่แม้ว่าคุณจะคลิกมันคุณก็สามารถลบมันได้อีกครั้งในยูทิลิตี้พวงกุญแจ เนื่องจาก Sierra กล่องโต้ตอบจะไม่ปรากฏอีกต่อไปและไม่มีรายการในยูทิลิตี้พวงกุญแจ
hogliux

นี่คือกล่องโต้ตอบที่ฉันกำลังพูดถึงซึ่งดูเหมือนจะไม่มีอยู่อีกต่อไป: dribin.org/dave/resources/pictures/ssh_leopard_dialog.png
hogliux

คำตอบ:


27

หากต้องการปิดใช้งานการจัดเก็บวลีรหัสผ่านในพวงกุญแจคุณควรเพิ่มบรรทัดต่อไปนี้ลงในไฟล์~ / .ssh / config :

Host *
UseKeyChain no

หากคุณมีข้อความรหัสผ่านที่เก็บไว้ใน Keychain คุณสามารถลบโดยใช้คำสั่ง:

cd ~/Library/Keychains/<UUID>/
sqlite3 keychain-2.db 'delete from genp where agrp="com.apple.ssh.passphrases"'

หากคุณต้องการที่จะมีพฤติกรรมเช่นใน OS X El Capitan หรือรุ่นก่อนหน้า (เช่นข้อความรหัสผ่านที่จัดเก็บไว้จนกว่าจะออกจากระบบหรือรีสตาร์ท) เพียงเพิ่ม ~ / .ssh / config:

AddKeysToAgent yes

คุณไม่จำเป็นต้องเริ่มต้น ssh-agent


1
คำตอบนี้แก้ปัญหาได้อย่างถาวร! ดังนั้นฉันทำเครื่องหมายว่านี่เป็นคำตอบที่ถูกต้อง ขอขอบคุณ!
hogliux

การแก้ไขที่แนะนำ: เปลี่ยนLibrary/Keychains/<UUID>/เป็น~/Library/Keychains/<UUID>/เพื่อความชัดเจน :)
Mohamed Hafez

ยอมรับการแก้ไขที่แนะนำแล้ว :)
mbamac

20

ขอบคุณไคลฟ์ฉันเข้าใจ 'คุณสมบัติ' ใหม่นี้ได้ดีขึ้น เมื่อคุณพิมพ์ข้อความรหัสผ่านของคุณ Sierra เพิ่มลงใน Keychain ของคุณ แต่ไม่รวมถึง ssh-agent หากตัวตนของคุณไม่ได้อยู่ในตัวแทน ssh ssh-addมีวิธีที่จะจัดการกับมันไม่มี ในการจัดการ (เช่น. ลบ) ตัวตนของคุณจากพวงกุญแจคุณจะต้องเพิ่มตัวตนของคุณไปโดยใช้ssh-agent ssh-addเมื่อคุณเพิ่มข้อมูลประจำตัวของssh-agentคุณคุณสามารถใช้ssh-add -K -dเพื่อลบออกจากทั้งสองssh-agentและพวงกุญแจ ถ้าคุณต้องการเพิ่มข้อมูลประจำตัวของคุณใน ssh-agent ทุกครั้งที่คุณใช้ ssh เพิ่ม:

AddKeysToAgent yes

.ssh/configที่คุณ สิ่งนี้จะช่วยให้มั่นใจได้ว่าssh-agentมีตัวตนของคุณอยู่เสมอ


เพียงแค่ติดตาม หากคุณเพิ่ม 'UseKeyChain no' ใน. ssh / config ของคุณจะทำให้ Keychain ไม่สามารถเพิ่มข้อความรหัสผ่านของคุณได้ คุณต้องการเก็บ 'AddKeysToAgent ใช่' ใน ssh-agent จะเก็บข้อความรหัสผ่านของคุณไว้จนกว่าคุณจะรีบูตหรือใช้ ssh-add -d
ยีน Frenkler

หมายเหตุสิ่งนี้ต้องการการใช้ OpenSSH ที่จัดส่งโดย Apple แพทช์นี้ไม่รวมอยู่ใน home-brew ณhomebrew/dupes/openssh: stable 7.3p1
Ryan Gibbons

3
ssh-add -K -d

สิ่งนี้สามารถลบวลีรหัสผ่านที่เก็บไว้ก่อนหน้านี้ในพวงกุญแจ ตั้งแต่ macOS 10.12 Sierra เพื่อหลีกเลี่ยงข้อความรหัสผ่านที่เก็บไว้ในพวงกุญแจอีกครั้งให้แน่ใจว่าได้ทำssh-addก่อน


ใช่. สิ่งนี้เคยทำงานกับ macOS Sierra เวอร์ชั่นก่อนหน้านี้ แต่ไม่ทำงานอีกต่อไป macOS Sierra ยังจำข้อความรหัสผ่านได้
hogliux

1
ตกลง. การสอบสวนเพิ่มเติม มันลืมไปซักครั้ง แต่มันจะกลับเข้าไปในพวงกุญแจทันทีหลังจากใช้มันทุกที่ (ssh, scp, git ฯลฯ ) คนแปลกหน้าบางคนส่งอีเมลฉันโดยตรงและพบว่าข้อความรหัสผ่านดูเหมือนว่าจะถูกเก็บไว้ใน ~ / Library / Keychains / <SOME-UUID> /keychain-2.db แต่แม้เมื่อล็อคกุญแจเข้าสู่ระบบของฉัน (และพวงกุญแจอื่น ๆ ), OS x จะไม่ถามรหัสผ่านพวงกุญแจของฉันเมื่อเข้าถึงข้อความรหัสผ่าน ดูเหมือนจะไม่ถูกต้อง
hogliux

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