Câu hỏi macOS liên tục hỏi cụm từ mật khẩu ssh của tôi kể từ khi tôi cập nhật lên Sierra


Nó được sử dụng để nhớ cụm từ mật khẩu, nhưng bây giờ nó hỏi nó với tôi mỗi lần.

Tôi đã đọc rằng tôi cần phải tạo lại khóa công khai với lệnh này, mà tôi đã làm:

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

nhưng nó không khắc phục được gì.

Làm thế nào tôi có thể làm cho macOS nhớ mật khẩu của tôi một lần nữa?


500
2017-09-22 09:21


gốc


Tôi đang gặp phải hành vi liên quan: Trước đó, hộp thoại vòng phím sẽ bật lên để yêu cầu mật khẩu, bây giờ tôi chỉ nhận được nhắc nhở giao diện điều khiển SSH thông thường. Một số đăng ký chương trình trợ giúp có thể đã biến mất. - Daniel B
Đã nhiều năm kể từ khi tôi tạo id_rsa của mình và tôi chưa bao giờ sử dụng cụm mật khẩu và sử dụng cụm từ này để chuyển đổi thành nhiều máy chủ. Tôi có thực sự có một mật khẩu trên nó, hoặc là nó chỉ Sierra mà tôi nên? Lưu ý rằng $ cat ~ / .ssh / id_rsa | đầu -2 ----- BEGIN RSA PRIVATE KEY ----- Loại Proc: 4, ENCRYPTED - Joe Murray
trùng lặp apple.stackexchange.com/q/254468/62697 - Cœur
@erwan, bạn dường như hoạt động ở đây. Câu trả lời dưới đây có giải quyết được vấn đề của bạn không? - tedder42
Có bất kỳ câu trả lời nào giải quyết vấn đề của bạn không? Nếu vậy bạn nên xem xét chấp nhận nó. - Shafik Yaghmour


Các câu trả lời:


Trong phiên bản mới nhất của macOS (10.12.2), điều này rất dễ sửa. Chỉ cần chỉnh sửa ~/.ssh/config và kích hoạt UseKeychain Tùy chọn:

Host *
    UseKeychain yes

Không cần phải thay đổi gì khác. Bây giờ mọi thứ hoạt động theo cách nó được sử dụng để làm việc trước các bản cập nhật mới nhất. Bạn không cần thêm khóa vào ssh-agent.


Chỉnh sửa: Bạn có thể vẫn cần phải nhập cụm mật khẩu của mình một lần. Nếu bạn không biết, hãy làm theo những hướng dẫn này để lộ ra.


985
2017-12-19 12:04



Điều này hoàn toàn làm việc cho tôi. Mọi thứ bên dưới dường như phức tạp hơn sửa chữa này. - Br.Bill
Lưu ý, Host * khối nên (hầu như) luôn luôn được đặt ở dưới cùng của bạn ~/.ssh/config tập tin. Khi nào ssh đang tìm kiếm các cài đặt mà nó sử dụng Đầu tiên giá trị nó tìm thấy. Do đó, bằng cách đặt khối ký tự đại diện vào cuối, nó hoạt động như một tập hợp các giá trị mặc định; bạn có thể ghi đè cài đặt cho các máy chủ cụ thể bằng cách chỉ định chúng trước đó trong tệp. - Molomby
Điều này làm việc cho tôi là tốt, nhưng tôi đã phải nhập cụm từ mật khẩu một cách chính xác một lần. Có câu trả lời khác mô tả cách bạn có thể xem mật khẩu nếu bạn không nhớ mật khẩu đó. - FGreg
Nếu tệp cấu hình không tồn tại, việc tạo một tệp và thêm tệp này cũng sẽ hoạt động. - wynshaft
Bạn không cần Host * phần mở đầu. Chỉ cần nối thêm một dòng UseKeychain yes ở trên cùng của .ssh/config nếu bạn muốn điều này áp dụng cho tất cả các máy chủ. - sj26


Tôi đã từng gặp vấn đề tương tự. MacOS Sierra keychain liên tục yêu cầu mật khẩu. Id_rsa của bạn phải được mã hóa bằng cụm mật khẩu để bảo mật. Sau đó thử thêm nó vào keychain ssh-add -K ~/.ssh/id_rsa

Nếu khóa của bạn nằm trong một thư mục khác ~/.ssh sau đó thay thế bằng thư mục chính xác.

Keychain giờ đã biết khóa ssh của bạn và hy vọng, tất cả các công trình hiện tại (tôi đã làm)


164
2017-09-23 12:53



Điều này làm việc nhưng dường như không tồn tại khi tôi khởi động lại máy tính của tôi. Còn ai có vấn đề tương tự không? - joshua.paling
Yup, cùng một vấn đề ở đây. @ joshua.paling - kingkool68
@ joshua.paling, kingkool68 - Apple đã loại bỏ khả năng nhớ các khóa SSH của bạn trong quá trình khởi động lại để phù hợp với hành vi OpenSSH chính thống. Xem câu hỏi này để biết các cách khác để đạt được cùng chức năng: apple.stackexchange.com/questions/254468/… - Evan Pon
@EvanPon Nhưng điều đó sẽ không hoạt động với các khóa được mã hóa, phải không? - Konrad Rudolph
@KonradRudolph nó hoạt động cho tôi. Đang gọi ssh-add với -A tùy chọn sẽ tìm trong chuỗi khóa MacOS cho bất kỳ mật khẩu nào cho danh tính được đề cập. Tôi tin rằng nó sẽ nhắc bạn nếu các mật khẩu không có trong keychain. - Evan Pon


Điều này đã khắc phục vấn đề tương tự của tôi:

/usr/bin/ssh-add -K

Điều này lưu trữ mật khẩu trong keychain của bạn.

Cập nhật (cảm ơn @EasyCo): Điều này hoạt động nhưng không tồn tại giữa các lần khởi động lại. Giải pháp @ jukka-suomela trên trang này làm làm việc trong quá trình khởi động lại. Bạn có thể tìm thấy câu trả lời ở đây:

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


63
2017-10-09 14:39



Đây là điều duy nhất hoạt động. - cryptic0
Tôi không cần tạo .ssh / .config khi sử dụng giải pháp này. - Shai
Điều này làm việc cho tôi. Không cần chỉnh sửa tệp lưu trữ. Tôi đang ở Sierra. - cchiera
Điều này làm việc cho tôi trên Mac OS Sierra. - Dayron Gallardo
Như đã nêu trước đây, công trình này không tồn tại giữa các lần khởi động lại. @ jukka-suomela của giải pháp làm việc trên khởi động lại. - EasyCo


Tôi chỉ phải nhập cụm từ mật khẩu chính xác một lần và nó bắt đầu hoạt động. Vấn đề là tôi không nhớ mật khẩu SSH ban đầu của mình, nhưng tôi đã khôi phục nó bằng cách làm theo các bước này từ Github:

  • Trong Trình tìm kiếm, tìm kiếm ứng dụng Keychain Access.
  • Trong Keychain Access, tìm kiếm SSH.
  • Kích đúp vào mục nhập cho khóa SSH của bạn để mở một hộp thoại mới.
  • Hộp thoại truy cập Keychain Ở góc dưới bên trái, chọn Hiển thị mật khẩu.
  • Bạn sẽ được nhắc nhập mật khẩu quản trị của mình. Nhập nó vào hộp thoại "Keychain Access".
  • Mật khẩu của bạn sẽ được tiết lộ.

38
2017-10-29 17:16



Không hoạt động. Nhà ga vẫn nói "cụm mật khẩu không hợp lệ" - Jayden Lawson


Không có giải pháp nào ở trên hoạt động sau khi cài đặt Sierra trên El Capitan trên MacBook Pro mới. Sierra theo thiết kế không lưu các khóa SSH trong keychain.

Hai giải pháp làm việc cho tôi. Một là thêm lệnh ssh-add -A &> /dev/null đến ~ / .bash_profile. Mỗi lần bạn mở terminal, lệnh này sẽ được thực hiện ( &> /dev/null một phần gửi đầu ra của lệnh tập tin / dev / null).

Một giải pháp phức tạp hơn nhưng hơi slicker là tạo ra một plist với lệnh được thực hiện mỗi khi hệ điều hành được khởi động như được đề xuất trong Lưu khóa SSH trong macOS Sierra keychain. Điều này liên quan đến việc sử dụng Xcode để tạo tệp.


18
2017-09-27 14:40



Đây cũng là câu trả lời chính thức của Apple - xem openradar.appspot.com/27348363 - Nick Maynard
Các giải pháp tốt nhất cho đến bây giờ cho tôi. Tôi đang sử dụng Mac OSX Sierra (10.12.2). - zyc


Một sửa chữa là thêm phần sau vào tệp ~ / .ssh / config của bạn:

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

Được lấy từ: https://www.reddit.com/r/osx/comments/52zn5r/difficulties_with_sshagent_in_macos_sierra/ Cũng thấy: https://apple.stackexchange.com/a/264974/3810


13
2017-12-16 06:14



Cho đến nay, không có câu trả lời nào, có ai đã đề cập đến Bad configuration option: usekeychain lỗi tôi nhận được với UseKeychain (tuy nhiên nó được viết hoa). Nhưng tôi là có thể làm cho nó hoạt động bằng cách loại bỏ chỉ dòng đó và để lại AddKeysToAgent và IdentityFile (bạn vẫn phải nhập mật khẩu lần đầu tiên). Điều này là với macOS Sierra 10.12.6. - William Turrell
điều này hoạt động tốt khi tôi đang ở trong terminal và sử dụng lệnh ssh, nhưng các ứng dụng khác, như WebStorm sử dụng thiết bị đầu cuối của riêng họ, không cấu hình thi cho đến khi tôi sử dụng lệnh ssh trong terminal thông thường. sau đó nó hoạt động ở khắp mọi nơi, bất kỳ đề xuất? - santiago arizti
@WilliamTurrell Nếu điều này vẫn xảy ra, hãy nhập which ssh để đảm bảo rằng bạn đang sử dụng /usr/bin/ssh và không phải là phiên bản từ Fink hoặc MacPorts. /usr/local/bin/ssh hoặc là /opt/local/bin/ssh - Stefan Lasiewski


Sáng nay, tôi đã có cùng một vấn đề như bạn sau khi cập nhật lên Sierra. Trong trường hợp của tôi, id_rsa tập tin đã được mã hóa và sau khi giải mã nó hoạt động như một nét duyên dáng.

  1. Xác minh xem bạn có id_rsa tệp được mã hóa bằng lệnh sau: cat ~/.ssh/id_rsa | head -2
  2. Nếu dòng thứ hai nói Proc-Type: 4,ENCRYPTED, nó được mã hóa và bạn có thể thử giải mã nó
  3. Quan trọng: sao lưu bản gốc của bạn id_rsa tập tin! Sử dụng lệnh cp ~/.ssh/id_rsa ~/.ssh/id_rsa.bak
  4. Giải mã khóa cá nhân của bạn bằng openssl rsa -in ~/.ssh/id_rsa -out ~/.ssh/id_rsa.decrypted
  5. Xóa khóa gốc (rm ~/.ssh/id_rsa) và thay thế bằng mã đã được giải mã: mv ~/.ssh/id_rsa.decrypted ~/.ssh/id_rsa

Sau các bước này, bạn sẽ có thể sử dụng lại ssh.


7
2017-09-22 10:58



Mặc dù đó là một cách giải quyết khác nhau, tôi không nghĩ rằng nó thực sự giải quyết vấn đề của OP. - Daniel B
Điều này làm việc cho tôi. @ DanielB, vấn đề với việc này là gì? - Dag Høidahl
@ DagHøidahl Chìa khóa sẽ không còn được mã hóa nữa. Nó có thể bị đánh cắp với quyền người dùng thông thường, vì vậy mã hóa là một NÊN mạnh mẽ. - Daniel B
Điều này loại bỏ mật khẩu từ khóa, đó là lý do tại sao nó hoạt động xung quanh vấn đề của OP. Nhưng tôi khuyên bạn nên chống lại điều này. Mật khẩu là tất cả những gì ngăn mọi người sử dụng khóa của bạn khi nó bị đánh cắp. Vì khóa của bạn có thể sẽ cấp quyền truy cập vào nhiều hệ thống mà bạn không muốn làm suy yếu nó. - Martijn Heemels


Tôi cũng gặp vấn đề này khi cố gắng triển khai một số mã sử dụng Capistrano. Rất bực bội. Dưới đây là hai phương pháp tôi biết để giải quyết vấn đề này.

Phương pháp 1: Thêm tất cả đã biết các khóa cho tác nhân SSH.

Vì vậy, một giải pháp tôi tìm thấy là chạy ssh-add với -A tùy chọn - bổ sung tất cả các định danh đã biết cho tác nhân SSH bằng cách sử dụng bất kỳ cụm mật khẩu nào được lưu trữ trong keychain của bạn — như sau:

ssh-add -A

Bây giờ điều này có hiệu quả nhưng nó sẽ không tồn tại khi khởi động lại. Vì vậy, nếu bạn không bao giờ phải lo lắng về điều này một lần nữa, chỉ cần mở ra người dùng của bạn ~/.bash_profile tập tin như thế này:

nano ~/.bash_profile

Và thêm dòng này vào cuối:

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

Bây giờ khi bạn mở một cửa sổ Terminal mới, tất cả sẽ tốt!

Cách 2: Thêm chỉ các khóa SSH có trong keychain cho đại lý.

Vì vậy, trong khi ssh-add -A tùy chọn sẽ hoạt động đối với hầu hết các trường hợp cơ bản, tôi gặp phải vấn đề gần đây khi tôi có 6-7 hộp Vagrant (sử dụng các khóa SSH / danh tính để truy cập) trên máy trên đầu id_rsa.pub tại chỗ.

Dài câu chuyện ngắn, tôi đã bị khóa máy chủ từ xa do quá nhiều lần thử không thành công dựa trên khóa / danh tính SSH do truy cập máy chủ dựa trên mật khẩu và khóa / nhận dạng SSH là khóa / danh tính SSH. Vì vậy, các đại lý SSH đã cố gắng tất cả các các khóa SSH của tôi, không thành công và thậm chí tôi không thể truy cập vào lời nhắc mật khẩu.

Vấn đề là ở đó ssh-add -A sẽ chỉ tự ý thêm mỗi khóa SSH / danh tính duy nhất mà bạn có cho tác nhân ngay cả khi bạn không cần phải làm như vậy; chẳng hạn như trong hộp Vagrant.

Giải pháp của tôi sau khi thử nghiệm nhiều như sau.

Đầu tiên, nếu bạn có nhiều khóa SSH / danh tính được thêm vào tác nhân của bạn hơn mức bạn cần — như được hiển thị với ssh-add -l sau đó thanh tẩy tất cả chúng từ đại lý như vậy:

ssh-add -D

Khi thực hiện xong, sau đó bắt đầu tác nhân SSH làm quá trình nền như sau:

eval "$(ssh-agent -s)"

Bây giờ, nó trở nên kỳ lạ và tôi không chắc chắn tại sao. Trong một số trường hợp, bạn có thể thêm ~/.ssh/id_rsa.pub khóa / danh tính cho đại lý như vậy:

ssh-add ~/.ssh/id_rsa.pub

Nhập cụm mật khẩu của bạn, nhấn Trở về và bạn nên làm tốt.

Nhưng trong các trường hợp khác, chỉ cần chạy điều này là đủ để lấy khóa / danh tính được thêm vào:

ssh-add -K

Nếu tất cả đã hiệu quả, hãy nhập ssh-add -l và bạn sẽ thấy một khóa SSH / danh tính duy nhất được liệt kê.

Tất cả đều tốt? Bây giờ hãy mở .bash_profile:

nano ~/.bash_profile

Và thêm dòng này vào phía dưới; nhận xét hoặc xóa -Aphiên bản nếu bạn có tại chỗ:

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

Điều đó sẽ cho phép khóa SSH / nhận dạng được tải lại cho tác nhân SSH trên mỗi lần khởi động / khởi động lại.

CẬP NHẬT: Apple hiện đã thêm một UseKeychain tùy chọn để mở tùy chọn cấu hình SSH và xem xét ssh-add -A một giải pháp là tốt.

Kể từ macOS Sierra 10.12.2, Apple (tôi giả định) đã thêm UseKeychain tùy chọn cấu hình cho cấu hình SSH. Kiểm tra trang người đàn ông (qua man ssh_config) hiển thị thông tin sau:

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''.

Điều này khiến Apple thấy được giải pháp khi thêm ssh-add -A cho bạn .bash_profile  như đã giải thích trong vé Open Radar này hoặc thêm UseKeychain là một trong các tùy chọn trong mỗi người dùng ~/.ssh/config.


3
2018-01-02 00:05