Câu hỏi Khóa SSH - Vẫn yêu cầu mật khẩu và cụm mật khẩu


Tôi đã phần nào 'đưa lên' với Github luôn hỏi tên người dùng và mật khẩu của tôi khi tôi sao chép một kho lưu trữ. Tôi muốn bỏ qua bước này bởi vì nó là một khó chịu trong công việc của tôi.

Tôi đã thử thiết lập một khóa SSH (mà tôi đã thực hiện thành công) bằng cách sử dụng hướng dẫn này. https://help.github.com/articles/generating-ssh-keys và tôi đã thành công.

Vấn đề của tôi là tôi vẫn được yêu cầu mật khẩu và mật khẩu github của tôi khi nhân bản một kho lưu trữ (sử dụng SSH). Sự hiểu biết của tôi là sau khi tôi thiết lập khóa SSH này, tôi sẽ không còn phải làm điều đó nữa.

Tôi là một chút không chắc chắn những gì để hỏi, vì vậy tôi sẽ chỉ nêu mục tiêu của tôi.

Tôi muốn có thể sao chép các kho lưu trữ mà không cần phải đặt thông tin Github của tôi mọi lúc.

Tôi đang thiếu gì với khóa SSH? Nếu bất cứ ai có thể cung cấp một số hướng dẫn hoặc tài nguyên tôi sẽ đánh giá cao nó, bởi vì tôi đã luôn luôn cảm thấy một chút bị mất khi nó đến xác thực SSH trong GitHub.

Từ kiến ​​thức của tôi, đây là một lệnh kiểm tra nếu mọi thứ đang hoạt động đúng, đây là đầu ra từ bảng điều khiển của tôi:

~ $ ssh -T git@github.com
Saving password to keychain failed
Enter passphrase for key '/Users/MYNAME/.ssh/id_rsa':
Hi MYNAME! You've successfully authenticated, but GitHub does not provide shell access.

Khi tôi nhập mật khẩu của mình, điều đó có bị lỗi trước không? Sau đó, khi tôi nhập cụm mật khẩu của mình, nó sẽ chuyển.


278
2018-01-13 15:29


gốc


Trong đó hệ điều hành là bạn? Máy tính để bàn Linux hiện đại sẽ đề xuất lưu trữ cụm mật khẩu của bạn trong trình quản lý khóa. Tương tự trong Mac OS X. Trong Windows, bạn có thể sử dụng pageant, là một phần của putty. Trong tất cả các mục tiêu là như nhau: bạn chỉ nhập cụm từ mật khẩu một lần sau khi bạn khởi động PC, các nhân viên quản lý khóa sẽ chuyển nó sang ssh trong các lần sử dụng tiếp theo cho đến khi bạn khởi động lại. - janos
Bản sao của Git push yêu cầu tên người dùng và mật khẩu
Tôi là một chút muộn để các bên ở đây, nhưng trên tab nhỏ clone / nút trong github có một liên kết mà nói "Sử dụng SSH". Bạn muốn làm điều đó. Nó thay đổi liên kết bản sao của bạn thành một cái gì đó như "git @ github: username / project.git". Nếu bạn đã thêm khóa SSH vào github và có nó chạy trên ssh-agent cục bộ, thì bạn sẽ có thể đẩy mà không cần nhập tên người dùng hoặc mật khẩu. - Logan Kitchen


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


Nếu bạn làm việc với HTTPs url, nó sẽ luôn hỏi tên người dùng / mật khẩu của bạn.

Nếu bạn đang sử dụng chính xác SSH khi nhân bản / thiết lập điều khiển từ xa. Sau đó, hãy chắc chắn rằng bạn có một ssh-agent để nhớ mật khẩu của bạn. Bằng cách đó, bạn sẽ chỉ nhập cụm mật khẩu của mình một lần bằng phiên đầu cuối.

Nếu nó vẫn còn quá khó chịu, sau đó chỉ cần thiết lập một ssh-key mà không có cụm mật khẩu.


98
2018-01-13 15:43



Cảm ơn vì sự trả lời. Tôi đã luôn sử dụng HTTP. Tôi đang cố gắng để đạt được xác thực SSH và nghĩ rằng tôi thiết lập nó. Là ssh-đại lý một cái gì đó bên ngoài git tôi cần phải cài đặt? Cảm ơn - HelloWorld
@ R11G bạn không thể, nếu không mật khẩu sẽ không an toàn ... Chỉ cần tạo lại mật khẩu mới. - Simon Boudrias
Tôi chỉ muốn lưu ý rằng các mật khẩu được sử dụng để mã hóa khóa riêng của bạn, vì vậy nếu bạn không sử dụng cụm mật khẩu thì khóa riêng tư của bạn sẽ không được mã hóa trên máy của bạn. Nó giống như để lại một mật khẩu trong một tập tin văn bản nằm xung quanh trên máy tính của bạn.
Hài hước, repos HTTPS của tôi không bao giờ yêu cầu mật khẩu và repos SSH của tôi luôn làm. - Adam
Xem tài liệu github này để chuyển đổi URL của từ xa từ https thành ssh. Để kiểm tra xem URL của từ xa là ssh hay https, hãy sử dụng git remote -v. Để chuyển từ https sang ssh: git remote set-url origin git@github.com:USERNAME/REPOSITORY.git - JeeYem


Thêm danh tính không có Keychain

Có thể có những lúc bạn không muốn cụm từ mật khẩu được lưu trữ trong chuỗi khóa, nhưng không muốn phải nhập cụm từ mật khẩu lặp đi lặp lại.

Bạn có thể làm điều đó như thế này:

ssh-add ~/.ssh/id_rsa 

Điều này sẽ yêu cầu bạn cho cụm mật khẩu, nhập nó và nó sẽ không hỏi lại cho đến khi bạn khởi động lại.

Thêm danh tính bằng Keychain

Như @dennis chỉ ra trong các ý kiến, để duy trì cụm từ mật khẩu thông qua khởi động lại bằng cách lưu trữ nó trong keychain của bạn, bạn có thể sử dụng -K tùy chọn khi thêm danh tính như thế này:

ssh-add -K ~/.ssh/id_rsa

Một lần nữa, điều này sẽ yêu cầu bạn cho các cụm từ mật khẩu, nhập nó và lần này nó sẽ không bao giờ yêu cầu một lần nữa cho danh tính này.


489
2017-09-08 09:58



Tại sao điều này hoạt động? Đây thực sự là một hack? - shovavnik
Lưu ý rằng điều này sẽ không tiếp tục nhận dạng khi khởi động lại. Bạn có thể dùng -K tùy chọn lưu trữ cụm mật khẩu trong keychain của bạn khi thêm nó, ví dụ: ssh-add -K ~/.ssh/id_rsa - Dennis
chữ thường -k cho tôi ... (Linux Mint / Ubuntu 14.04 base) nhưng có! cuối cùng đã sắp xếp điều này ... - Louis Maddox
chỉ cần chạy lệnh "ssh-add" và nhập mật khẩu một lần, dòng lệnh sẽ không nhắc bạn nhập lại mật khẩu. - AVINASH SHRIMALI
Bạn không cần bất kỳ đối số nào; chỉ cần chạy ssh-add sẽ tự động thêm ~/.ssh/id_rsa(trong số các tệp khác). Và không có lý do gì để gửi kết quả đến /dev/null; tốt hơn nhiều để xem báo cáo về những gì nó đã làm. - Ted Hopp


Trên Mac OSX, bạn có thể thêm khóa riêng của mình vào keychain bằng cách sử dụng lệnh:

ssh-add -K /path/to/private_key

Nếu khóa riêng của bạn được lưu trữ tại ~ / .ssh và được đặt tên id_rsa:

ssh-add -K ~/.ssh/id_rsa

Sau đó, bạn sẽ được nhắc nhập mật khẩu của mình, mật khẩu sẽ được lưu trữ trong keychain của bạn.


179
2017-12-14 15:12



Trong trường hợp của tôi, nó vẫn đang nhắc mật khẩu sau khi khởi động lại (macOS Sierrra 10.12.2). Bất kỳ ý tưởng về cách giải quyết này? - inigo333
Nevermind, tôi vừa tìm ra vấn đề. Đó là một lỗi (tính năng?) Từ Mac OS X 10.12, trong đó ssh-agent không tự động tải mật khẩu trên keychain trong khi khởi động. github.com/lionheart/openradar-mirror/issues/15361 - inigo333
@ inigo333 thú vị. Tôi chỉ cập nhật và nhận thấy điều này bản thân mình! - Groot
đã giải quyết, cảm ơn! trong trường hợp của tôi mac os 10.11 nhắc tôi cửa sổ để nhập cụm từ mật khẩu, nhưng mật khẩu của tôi không thành công (và tôi không hiểu tại sao cho đến nay), sau khi tôi đã làm điều này ssh-add ...  với cùng một đường chuyền - vấn đề đã biến mất! - yetanothercoder
@Groot, BTW, thêm "Host * UseKeychain yes" vào "~ / .ssh / config", như được đề xuất trong các câu trả lời khác, khắc phục sự cố. - inigo333


Tôi đã thử tất cả các câu trả lời ở đây và không có câu trả lời nào trong số này có hiệu quả! Mật khẩu của tôi sẽ không tồn tại giữa các phiên / khởi động lại máy Mac của tôi.

Những gì tôi phát hiện ra từ việc đọc OpenRadar này và cuộc thảo luận trên Twitter này đó là Apple cố ý thay đổi hành vi cho ssh-agent trong macOS 10.12 Sierra không còn tự động tải các khóa SSH trước đó nữa. Để duy trì hành vi tương tự như El Cap, tôi đã làm như sau:

  1. ssh-add -K ~/.ssh/id_rsa
    Lưu ý: thay đổi đường dẫn đến vị trí khóa id_rsa của bạn.
  2. ssh-add -A 
  3. Tạo (hoặc chỉnh sửa nếu nó tồn tại) như sau ~/.ssh/config tập tin:

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

Và bây giờ mật khẩu của tôi được nhớ giữa các lần khởi động lại máy Mac của tôi!


162
2018-01-05 18:51



Đây có thể là thứ hữu ích để thêm vào github hoặc là osx trang tài liệu. Đã có thời gian khó khăn nhất để tìm ra lý do tại sao máy Mac của tôi chạy 10.11 và máy chạy 10.12 khác của tôi hoạt động khác. - Grr
Đã xảy ra với tôi sau khi nâng cấp OSX, cảm ơn (tôi nghĩ ssh-add -A không cần thiết nếu bạn chỉ có một khóa ~/.ssh/id_rsa) - Dorian
Đây là một câu trả lời vô cùng hữu ích. Cảm ơn, bạn đã làm cho ngày của tôi. - Jan Nash
Tôi vừa mới nâng cấp lên macOS 10.12 và điều này cực kỳ hữu ích. Cảm ơn! - plast
Kể từ tháng 10 năm 2017, câu trả lời này chính xác là những gì bạn đang tìm kiếm nếu bạn đang sử dụng macOS 10.12 hoặc cao hơn. - brogrammer


Chỉ cần chạy lệnh sau:

ssh-add -K

Nó sẽ không bao giờ yêu cầu bạn nhập lại mật khẩu.


27
2018-01-11 13:09



Điều này làm việc rất tốt, nhưng tôi hơi lo ngại về việc chạy một lệnh ngẫu nhiên. Tuy nhiên, nếu bạn kiểm tra tài liệu ssh-add chỉ "thêm thông tin nhận dạng khóa cá nhân vào tác nhân xác thực" và -K tùy chọn chỉ đơn giản là làm cho nó như vậy "Khi thêm danh tính, mỗi cụm từ mật khẩu cũng sẽ được lưu trữ trong keychain của người dùng." - machineghost
Trên thực tế, nó chỉ cố định nó cho đến khi tôi khởi động lại :( - machineghost
trong bash shell cho Windows, cờ "-k" phải là chữ thường. Chỉ cần FYI - Fergus


Bạn có thể xóa cụm mật khẩu cho khóa

$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]

hoặc bạn có thể chạy

$ ssh-keygen -p

bạn nhận được lời nhắc cho keyfile. Theo mặc định, ~/.ssh/id_rsa vì vậy nhấn enter

Bạn sẽ được nhắc nhập cụm từ mật khẩu hiện tại.

Sau đó, sẽ có lời nhắc cho cụm từ mật khẩu mới, nhấn enter


24
2018-01-14 22:11



Điều này sẽ cao hơn rất nhiều câu trả lời gần giống hệt nhau để thêm cụm mật khẩu vào móc khóa. Tôi đã phải cung cấp chìa khóa công cộng cho một quản trị viên, và bao gồm một cụm từ mật khẩu đã trở nên khó chịu khi gõ mỗi lần. Đây là một giải pháp sạch sẽ khi bạn không có nhiều quyền kiểm soát máy của bạn (-K, -k, -A đã không làm việc cho tôi). - gwg
Đây là điều duy nhất làm việc cho tôi trong suốt quá trình khởi động lại, tất cả lệnh ssh-add -K, -k, v.v. không làm gì cho tôi. - Amalgovinus


Hãy chắc chắn rằng bạn đang sử dụng ssh cho kho lưu trữ của bạn

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin git@github.com:eMahtab/jenkins-cje-2017.git (fetch) origin git@github.com:eMahtab/jenkins-cje-2017.git (push)

enter image description here

Không sử dụng https, nếu từ xa của bạn đang sử dụng https thì nó sẽ tiếp tục yêu cầu mật khẩu, ngay cả khi bạn đã thêm khóa công khai vào Github và thêm khóa riêng vào ssh-agent. Dưới đây sẽ luôn yêu cầu mật khẩu

mahtab@mahtab-Lenovo-G50-70:~/my-projects/jenkins-cje-2017$ git remote -v origin https://github.com/eMahtab/jenkins-cje-2017.git (fetch) origin https://github.com/eMahtab/jenkins-cje-2017.git (push)


13
2018-04-29 11:33



Có sự khác biệt giữa hai loại URL từ xa rất hữu ích cho tôi. Điều này đã giúp tôi về mặt git pull và git push. Tôi đã chuyển url của mình từ kiểu HTTPS sang kiểu SSH và nó đã hoạt động--git pull đã ngừng yêu cầu mật khẩu. - Michael R
... và đó là -doh! - jm22