macOS ถามคำถามรหัสผ่าน ssh ของฉันตั้งแต่ฉันอัพเดตเป็น Sierra


588

มันเคยจดจำวลีรหัสผ่าน แต่ตอนนี้มันขอให้ฉันทุกครั้ง

ฉันได้อ่านว่าฉันจำเป็นต้องสร้างรหัสสาธารณะใหม่ด้วยคำสั่งนี้ซึ่งฉันทำ:

ssh-keygen -y -f id_rsa > id_rsa.pub

แต่มันก็ไม่ได้แก้ไขอะไร

ฉันจะทำให้ macOS จดจำวลีรหัสผ่านของฉันได้อีกครั้งได้อย่างไร


ฉันพบพฤติกรรมที่เกี่ยวข้อง: ก่อนหน้านี้กล่องโต้ตอบแบบพวงกุญแจจะปรากฏขึ้นเพื่อขอรหัสผ่านตอนนี้ฉันเพิ่งได้รับพรอมต์คอนโซล SSH ปกติ การลงทะเบียนโปรแกรมผู้ช่วยบางอย่างอาจหายไป
Daniel B

1
เป็นเวลาหลายปีแล้วที่ฉันสร้าง id_rsa ของฉันและฉันไม่เคยใช้ข้อความรหัสผ่านและใช้สิ่งนี้เพื่อ ssh ไปยังเซิร์ฟเวอร์จำนวนมาก ฉันมีข้อความรหัสผ่านจริงหรือว่า Sierra คิดว่าฉันควรทำ โปรดทราบว่า $ cat ~ / .ssh / id_rsa | head -2 ----- BEGIN RSA PRIVATE KEY ----- Proc-Type: 4, เข้ารหัส
Joe Murray


หากคุณกำลังใช้ Pretzo และไม่มีคำตอบเหล่านี้ได้รับการแก้ไขปัญหาของคุณ: ให้แน่ใจว่าคุณไม่ได้มีโมดูลเปิดใช้งานในssh zpretzorcไม่จำเป็นบน macOS อยู่แล้วและหากเปิดใช้งานจะมีข้อความแจ้งให้คุณใส่ข้อความรหัสผ่านแม้หลังจากที่คุณเพิ่มUseKeychainแล้ว
Jimothy

1
ลองทำssh -v ...เพื่อดูว่ามีข้อมูลการแก้ปัญหาใด ๆ ที่มีประโยชน์ ...
rogerdpack

คำตอบ:


1129

ใน macOS รุ่นล่าสุด (10.12.2) สิ่งนี้ง่ายต่อการแก้ไข เพียงแก้ไขของคุณ~/.ssh/configและเปิดใช้งานUseKeychainตัวเลือก:

Host *
    UseKeychain yes

ไม่จำเป็นต้องเปลี่ยนสิ่งอื่นใด ตอนนี้ทุกอย่างทำงานเหมือนที่เคยเป็นมาก่อนการอัพเดทล่าสุด ssh-agentคุณไม่จำเป็นต้องเพิ่มคีย์ในการ


แก้ไข:คุณอาจต้องป้อนข้อความรหัสผ่านของคุณอีกครั้ง หากคุณไม่รู้ให้ทำตามคำแนะนำเหล่านี้เพื่อเปิดเผย


24
มันใช้งานได้จริงสำหรับฉัน ทุกอย่างด้านล่างดูเหมือนซับซ้อนกว่าการแก้ไขนี้
Br.Bill

82
หมายเหตุHost *บล็อกควร (เกือบ) วางไว้ที่ด้านล่างของ~/.ssh/configไฟล์เสมอ เมื่อsshค้นหาการตั้งค่าระบบจะใช้ค่าแรกที่พบ ดังนั้นการวางบล็อกไวด์การ์ดไว้ที่ท้ายสุดจะทำหน้าที่เป็นชุดค่าเริ่มต้น คุณสามารถแทนที่การตั้งค่าสำหรับโฮสต์ที่ระบุได้โดยระบุไว้ก่อนหน้าในไฟล์
Molomby

6
สิ่งนี้ใช้ได้สำหรับฉันเช่นกัน แต่ฉันต้องป้อนวลีรหัสผ่านอย่างถูกต้องหนึ่งครั้ง มีคำตอบอื่นที่อธิบายถึงวิธีการดูรหัสผ่านหากคุณจำไม่ได้
FGreg

26
หากไม่มีไฟล์การกำหนดค่าการสร้างและการเพิ่มจะใช้งานได้เช่นกัน
wynshaft

6
คุณไม่จำเป็นต้องมีHost *หัวเรื่อง เพียงต่อท้ายบรรทัดเดียวUseKeychain yesที่ด้านบนของคุณ.ssh/configหากคุณต้องการให้สิ่งนี้ใช้กับโฮสต์ทั้งหมด
sj26

185

ฉันมีปัญหาเดียวกัน. พวงกุญแจ MacOS Sierra ขอรหัสผ่านอยู่ตลอดเวลา id_rsa ของคุณควรเข้ารหัสด้วยวลีรหัสผ่านเพื่อความปลอดภัย จากนั้นลองเพิ่มลงในพวงกุญแจssh-add -K ~/.ssh/id_rsa

หากคีย์ของคุณอยู่ในโฟลเดอร์อื่น~/.sshแทนที่จะใช้โฟลเดอร์ที่ถูกต้องแทน

พวงกุญแจตอนนี้รู้กุญแจ ssh ของคุณแล้วและหวังว่ามันจะทำงานได้ดีในตอนนี้


25
สิ่งนี้ใช้ได้ แต่ดูเหมือนว่าจะไม่คงอยู่เมื่อฉันรีสตาร์ทคอมพิวเตอร์ ใครที่มีปัญหาเดียวกัน
joshua.paling

1
ใช่ปัญหาเดียวกันที่นี่ @ joshua.paling
kingkool68

18
@ joshua.paling, kingkool68 - Apple ได้ลบความสามารถในการจดจำคีย์ SSH ของคุณในการรีบูตเพื่อให้สอดคล้องกับพฤติกรรม OpenSSH หลัก ดูคำถามนี้เพื่อหาวิธีอื่นในการใช้ฟังก์ชันการทำงานเดียวกัน: apple.stackexchange.com/questions/254468/…
Evan Pon

@EvanPon แต่นั่นจะไม่ทำงานกับคีย์เข้ารหัสใช่มั้ย
Konrad Rudolph

2
@ KonradRudolph มันใช้งานได้สำหรับฉัน การโทรssh-addพร้อม-Aตัวเลือกจะค้นหาพวงกุญแจ MacOS สำหรับรหัสผ่านใด ๆ สำหรับข้อมูลประจำตัวที่เป็นปัญหา ฉันเชื่อว่ามันจะแจ้งให้คุณทราบหากรหัสผ่านไม่ได้อยู่ในพวงกุญแจ
Evan Pon

73

สิ่งนี้แก้ไขปัญหาที่คล้ายกันของฉัน:

/usr/bin/ssh-add -K

ข้อความนี้เก็บวลีรหัสผ่านในพวงกุญแจของคุณ

อัปเดต (ขอบคุณ @EasyCo): ใช้งานได้ แต่ไม่คงอยู่ระหว่างการรีสตาร์ท วิธีการแก้ปัญหาของ @jukka-suomela ในหน้านี้สามารถใช้งานได้กับการรีสตาร์ท คุณสามารถหาคำตอบได้ที่นี่:

https://superuser.com/a/1158050/234685


3
นี่เป็นสิ่งเดียวที่ทำงานได้
cryptic0

5
ฉันไม่จำเป็นต้องสร้าง. ssh / .config เมื่อใช้โซลูชันนี้
ชัย

สิ่งนี้ใช้ได้สำหรับฉัน ไม่จำเป็นต้องแก้ไขไฟล์โฮสต์ ฉันอยู่ที่เซียร่า
cchiera

สิ่งนี้ใช้ได้กับฉันใน Mac OS Sierra
Dayron Gallardo

2
ตามที่ระบุไว้ก่อนหน้านี้ใช้งานได้ แต่ไม่คงอยู่ระหว่างการรีสตาร์ท วิธีการแก้ปัญหาของ @jukka-suomela ข้ามการรีสตาร์ท
EasyCo

40

ฉันต้องป้อนวลีรหัสผ่านที่ถูกต้องเพียงครั้งเดียวและมันเริ่มทำงานได้ ปัญหาคือว่าฉันจำรหัสผ่าน SSH ดั้งเดิมของฉันไม่ได้ แต่ฉันกู้คืนได้โดยทำตามขั้นตอนเหล่านี้จาก Github:

  • ใน Finder ให้ค้นหาแอป Keychain Access
  • ใน Keychain Access ค้นหา SSH
  • ดับเบิลคลิกที่รายการสำหรับคีย์ SSH ของคุณเพื่อเปิดกล่องโต้ตอบใหม่
  • กล่องโต้ตอบการเข้าถึงพวงกุญแจที่มุมล่างซ้ายเลือกแสดงรหัสผ่าน
  • คุณจะได้รับแจ้งให้ใส่รหัสผ่านของคุณ พิมพ์ลงในกล่องโต้ตอบ "การเข้าถึงพวงกุญแจ"
  • รหัสผ่านของคุณจะถูกเปิดเผย

2
ใช้งานไม่ได้ เทอร์มินัลยังบอกว่า "ข้อความรหัสผ่านที่ไม่ดี"
Jayden Lawson

18

ไม่สามารถแก้ไขปัญหาข้างต้นหลังจากติดตั้ง Sierra over El Capitan บน MacBook Pro ใหม่ Sierra โดยการออกแบบไม่ได้บันทึกคีย์ SSH ไว้ในพวงกุญแจ

วิธีแก้ไขปัญหาสองข้อทำงานสำหรับฉัน หนึ่งคือการเพิ่มคำสั่งssh-add -A &> /dev/nullไปที่ ~ / .bash_profile ทุกครั้งที่คุณเปิดเทอร์มินัลคำสั่งนี้จะถูกดำเนินการ ( &> /dev/nullส่วนที่ส่งเอาต์พุตของคำสั่งที่เป็นไฟล์ / dev / null)

วิธีการแก้ปัญหาที่มีความซับซ้อนมากขึ้น แต่ฝนเล็กน้อยคือการสร้าง plist กับคำสั่งที่จะดำเนินการทุกครั้งที่ OS เป็น booted เป็นข้อเสนอแนะในการประหยัดคีย์ SSH ในเซียร์รา MacOS พวงกุญแจ สิ่งนี้เกี่ยวข้องกับการใช้ Xcode เพื่อสร้างไฟล์


นี่ดูเหมือนจะเป็นคำตอบอย่างเป็นทางการของ Apple เช่นกัน - ดูopenradar.appspot.com/27348363
Nick Maynard

ทางออกที่ดีที่สุดจนถึงตอนนี้สำหรับฉัน ฉันใช้ Mac OSX Sierra (10.12.2)
zyc

15

วิธีแก้ไขหนึ่งคือการเพิ่มสิ่งต่อไปนี้ในไฟล์ ~ / .ssh / config

Host *
   AddKeysToAgent yes
   IdentityFile ~/.ssh/id_rsa
   UseKeychain yes

นำมาจาก: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ ดูเพิ่มเติมที่: https://apple.stackexchange.com/a/264974/3810


จนถึงขณะนี้ในคำตอบที่ไม่มีใครเคยพูดถึงBad configuration option: usekeychainข้อผิดพลาดที่ฉันได้รับกับ UseKeychain (แต่มันเป็นตัวพิมพ์ใหญ่) แต่ผมก็สามารถที่จะได้รับมันทำงานโดยการเอาเพียงบรรทัดนั้นและออกจาก AddKeysToAgent และ IdentityFile (คุณยังคงต้องใส่รหัสผ่านครั้งแรก) นี่คือกับ macOS Sierra 10.12.6
William Turrell

สิ่งนี้ใช้ได้ดีเมื่อฉันอยู่ใน terminal และใช้คำสั่ง ssh แต่แอปอื่น ๆ เช่น WebStorm ที่ใช้ terminal ของตัวเองอย่าใช้การกำหนดค่านี้จนกว่าฉันจะใช้คำสั่ง ssh ใน terminal ปกติเป็นครั้งแรก มันใช้ได้ทุกที่ข้อเสนอแนะใด ๆ
santiago arizti

@WilliamTurrell หากยังคงเกิดขึ้นให้พิมพ์which sshเพื่อให้แน่ใจว่าคุณกำลังใช้/usr/bin/sshและไม่ใช่รุ่นจาก Fink หรือ MacPorts ซึ่งจะอยู่ภายใต้สิ่งที่ชอบ/usr/local/bin/sshหรือ/opt/local/bin/ssh
Stefan Lasiewski

7

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

  1. ตรวจสอบว่าid_rsaไฟล์ของคุณถูกเข้ารหัสด้วยคำสั่งต่อไปนี้:cat ~/.ssh/id_rsa | head -2
  2. หากบรรทัดที่สองบอกว่าProc-Type: 4,ENCRYPTEDมีการเข้ารหัสและคุณสามารถลองถอดรหัสได้
  3. สำคัญ: ทำการสำรองข้อมูลid_rsaไฟล์ต้นฉบับของคุณ! ใช้คำสั่งcp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. ถอดรหัสคีย์ส่วนตัวของคุณด้วย openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. ลบคีย์เดิม ( rm ~/.ssh/id_rsa) และแทนที่ด้วยคีย์ถอดรหัส:mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

หลังจากขั้นตอนเหล่านี้คุณควรจะสามารถใช้ ssh ได้อีกครั้ง


4
ในขณะที่เป็นวิธีแก้ปัญหาแปลก ๆ ฉันไม่คิดว่ามันจะแก้ปัญหาของ OP ได้จริง ๆ
Daniel B

มันใช้งานได้สำหรับฉัน @DanielB มีปัญหาอะไรกับการทำเช่นนี้?
Dag Høidahl

7
@ DagHøidahlรหัสจะไม่ถูกเข้ารหัสอีกต่อไป มันอาจถูกขโมยด้วยสิทธิ์ของผู้ใช้ทั่วไปดังนั้นการเข้ารหัสจึงแข็งแกร่ง
Daniel B

6
นี่จะเป็นการเอารหัสผ่านออกจากกุญแจซึ่งเป็นสาเหตุว่าทำไมมันจึงแก้ปัญหาของ OP ได้ แต่ฉันแนะนำต่อนี้ รหัสผ่านคือทุกสิ่งที่ห้ามไม่ให้ผู้อื่นใช้กุญแจของคุณเมื่อถูกขโมย เนื่องจากคีย์ของคุณอาจให้การเข้าถึงหลาย ๆ ระบบคุณไม่ต้องการทำให้มันอ่อนลง
Martijn Heemels

5

ฉันลองคำตอบหลายคำตอบที่นี่ แต่ยังคงมีปัญหาเกี่ยวกับรีโมตคีย์ที่ผ่าน (เช่นเมื่อใช้ capistrano) เพื่อแก้ปัญหานี้ฉันอ่าน technote จาก apple และสร้างไฟล์ config ของฉันขึ้นมา ไม่ขอรหัสผ่านของฉันอีกต่อไป!

https://developer.apple.com/library/content/technotes/tn2449/_index.html

Host *  
   IdentityFile ~/.ssh/id_rsa  
   IgnoreUnknown UseKeychain  
   UseKeychain yes  
   AddKeysToAgent yes

4

ผมมีปัญหานี้เช่นกันเมื่อพยายามที่จะปรับใช้โค้ดบางส่วนใช้Capistrano น่าผิดหวังมาก ต่อไปนี้เป็นวิธีการสองวิธีที่ฉันทราบเพื่อจัดการกับปัญหานี้

วิธีที่ 1: เพิ่มคีย์ที่รู้จักทั้งหมดลงในตัวแทน SSH

ดังนั้นวิธีหนึ่งที่ฉันค้นพบก็คือรันssh-addด้วย-Aตัวเลือก - ซึ่งจะเพิ่มอัตลักษณ์ที่รู้จักทั้งหมดให้กับเอเจนต์ SSH โดยใช้ข้อความรหัสผ่านที่เก็บไว้ในพวงกุญแจของคุณ - เช่นนี้

ssh-add -A

ตอนนี้ใช้งานได้ แต่มันจะไม่คงอยู่ในการรีบูต ดังนั้นหากคุณไม่ต้องกังวลกับปัญหานี้อีกให้เปิด~/.bash_profileไฟล์ของผู้ใช้ดังนี้:

nano ~/.bash_profile

และเพิ่มบรรทัดนี้ที่ด้านล่าง:

ssh-add -A 2>/dev/null;

ตอนนี้เมื่อคุณเปิดหน้าต่างเทอร์มินัลใหม่ทั้งหมดน่าจะดี!

วิธีที่ 2: เพิ่มเฉพาะคีย์ SSH ที่อยู่ในพวงกุญแจไปยัง บริษัท ตัวแทน

ดังนั้นในขณะที่ssh-add -Aตัวเลือกควรทำงานในกรณีพื้นฐานส่วนใหญ่ฉันพบปัญหาเมื่อเร็ว ๆ นี้เมื่อฉันติดตั้งกล่อง Vagrant 6-7 กล่อง (ซึ่งใช้การตั้งค่า SSH คีย์ / รหัสประจำตัวสำหรับการเข้าถึง) บนเครื่องที่อยู่ด้านบนของid_rsa.pubสถานที่ทั่วไป

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

ปัญหาคือการที่ssh-add -Aจะเพิ่มคีย์ / รหัสประจำตัว SSH เดียวทุกครั้งที่คุณมีให้กับเอเจนต์แม้ว่าจะไม่จำเป็นต้องทำเช่นนั้น เช่นในกรณีของกล่อง Vagrant

วิธีการแก้ปัญหาของฉันหลังจากการทดสอบมากมีดังนี้

ก่อนอื่นถ้าคุณมีคีย์ / รหัส SSH เพิ่มเติมในเอเจนต์ของคุณมากกว่าที่คุณต้องการ - ดังที่แสดงssh-add -lแล้วให้ล้างทั้งหมดจากเอเจนต์ดังนี้:

ssh-add -D

เมื่อเสร็จแล้วให้เริ่มต้นเอเจนต์ SSH เป็นกระบวนการพื้นหลังดังนี้:

eval "$(ssh-agent -s)"

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

ssh-add ~/.ssh/id_rsa.pub

พิมพ์ข้อความรหัสผ่านของคุณกดปุ่มReturnและคุณควรจะไป

แต่ในกรณีอื่น ๆ เพียงแค่เรียกใช้สิ่งนี้ก็เพียงพอที่จะเพิ่มคีย์ / ข้อมูลประจำตัว:

ssh-add -K

หากใช้งานได้ดีแล้วให้พิมพ์ssh-add -lและคุณจะเห็นรหัส / ข้อมูลประจำตัวของ SSH เดียวอยู่ในรายการ

ทั้งหมดดี? ตอนนี้เปิดของคุณ.bash_profile:

nano ~/.bash_profile

และเพิ่มบรรทัดนี้ไปที่ด้านล่าง; แสดงความคิดเห็นหรือลบ-Aเวอร์ชันหากคุณมี:

ssh-add -K 2>/dev/null;

ซึ่งจะอนุญาตให้คีย์ / รหัสประจำตัว SSH ได้รับการโหลดซ้ำไปยังเอเจนต์ SSH ในการเริ่มต้น / รีบูตแต่ละครั้ง

UPDATE: ขณะนี้ Apple ได้เพิ่มUseKeychainตัวเลือกในตัวเลือกการกำหนดค่า SSH แบบเปิดและพิจารณาssh-add -Aวิธีการแก้ปัญหาเช่นกัน

ในฐานะของ macOS Sierra 10.12.2, Apple (ฉันถือว่า) ได้เพิ่มUseKeychainตัวเลือกการกำหนดค่าสำหรับการกำหนดค่า SSH ตรวจสอบหน้าคน (ผ่านman ssh_config) แสดงข้อมูลต่อไปนี้:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct.  The
        argument must be ``yes'' or ``no''.  The default is ``no''.

ซึ่งเดือดลงไปแอปเปิ้ลได้เห็นการแก้ปัญหาเป็นทั้งการเพิ่มssh-add -Aที่คุณ.bash_profile ตามที่อธิบายไว้ในตั๋วเรดาร์นี้เปิดหรือเพิ่มเป็นหนึ่งในตัวเลือกในต่อผู้ใช้UseKeychain~/.ssh/config


3

คำตอบของJukka Suomelaนั้นถูกต้อง แต่ถ้าคุณใช้opensshติดตั้งอยู่homebrewคุณต้องถอนการติดตั้งด้วย:

brew remove openssh

... เพื่อเปลี่ยนกลับเป็น openssh ค่าเริ่มต้นของระบบเนื่องจาก homebrew ไม่รองรับUseKeychainรายการตั้งค่า ssh


1
หากใครต้องการมันด้วย homebrew ของ ping ฉันที่นี่: github.com/rdp/homebrew-openssh-gssapi
rogerdpack

1

ฉันลองวิธีแก้ปัญหาทั้งหมดที่แนะนำที่นี่ แต่ฉันไม่มีการตั้งค่าพวงกุญแจใน Mac ของฉัน

การเพิ่มไปยังบรรทัดต่อไปนี้ที่.ssh/configไฟล์บนสุดทั้งในเครื่องของคุณและเครื่องจากระยะไกลทำให้ฉัน

PubkeyAcceptedKeyTypes=+ssh-dss 

1

คุณต้อง.plistเพิ่มไฟล์เพื่อ~/Library/LaunchAgents/ให้ทำงานได้ssh-add -Aในทุกการเริ่มต้นของ macOS

มีคำสั่งเดียวซึ่งทำสิ่งนี้ (จากSSH-keys-in-macOS-Sierra-keychain ) ซึ่งคือ:

curl -o ~/Library/LaunchAgents/ssh.add.a.plist https://raw.githubusercontent.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain/master/ssh.add.a.plist
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.