Câu hỏi Làm thế nào để tôi nói với Git cho Windows nơi tìm khóa RSA riêng của tôi?


Thiết lập Git của tôi chạy tốt trên Linux, nhưng khi tôi cố gắng thiết lập mọi thứ trong Windows (sử dụng Git cho Windows và TortoiseGit), Tôi không biết phải đặt khóa SSH riêng tư của tôi ở đâu (hoặc, vẫn tốt hơn, cách nói ssh nơi nó nằm). Tôi đang sử dụng tùy chọn ssh.exe tiêu chuẩn trong khi cài đặt Git cho Windows. Việc thiết lập chạy tốt nếu tôi cho phép xác thực mật khẩu (thay vì RSA) trên máy chủ.


461
2017-10-25 16:45


gốc


Tôi có cùng một vấn đề, tôi có thể ssh vào hộp dev của tôi bằng cách sử dụng một khóa công khai là "root" bằng cách sử dụng "Git Bash" chương trình được cài đặt với "Git cho Windows" nhưng tôi không thể đăng nhập là "git" với chính mặc dù tôi đã sao chép tệp "authorized_keys" của tôi từ "root" của tôi sang người dùng "git" của tôi và đặt chính chủ sở hữu và quyền. Tại sao tôi không thể đăng nhập là "git" khi "root" hoạt động với cùng một tệp "authorized_keys". Thay vào đó là "git", nó sẽ chuyển tất cả các khóa riêng tư, chính xác là giống với "root" và yêu cầu mật khẩu. Đây là một máy chủ Centos 5.5 bằng cách này. - Jarrod Roberson
@fuzzy lollipop: Bạn có quyền thích hợp đối với tệp authorized_keys của người dùng git không? Nó phải là chmod 600, và nên được sở hữu bởi người dùng git. Nếu nó được sở hữu bởi người dùng root, nó sẽ không hoạt động - Dan McClain
có tất cả các tệp và thư mục là chủ sở hữu và quyền chính xác - Jarrod Roberson


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


Đối với Git Bash

Nếu bạn đang chạy msysgit (tôi giả sử bạn) và đang tìm cách chạy Git Bash (tôi khuyên bạn nên sử dụng nó trên TortoiseGit, nhưng tôi dựa vào CLI nhiều hơn GUI bây giờ), bạn cần tìm ra thư mục chủ của bạn là gì cho Git Bash bằng cách khởi động nó rồi gõ pwd (Trên Windows 7, nó sẽ giống như C:\Users\phsr Tôi nghĩ). Trong khi bạn đang ở trong Git Bash, bạn nên mkdir .ssh.

Sau khi bạn có thư mục chính và một .ssh thư mục dưới đó, bạn muốn mở PuTTYgen và mở khóa (tệp .ppk) mà bạn đã tạo trước đây. Khi khóa của bạn đang mở, bạn muốn chọn Conversions -> Export OpenSSH key và lưu nó vào HOME\.ssh\id_rsa. Sau khi bạn có khóa tại vị trí đó, Git Bash sẽ nhận ra khóa và sử dụng nó.

Lưu ý: Nhận xét cho biết rằng điều này không hoạt động trong mọi trường hợp. Bạn có thể cần phải sao chép khóa OpenSSH để Program Files\Git\.ssh\id_rsa (hoặc là Program Files (x86)\Git\.ssh\id_rsa).

Đối với TortoiseGit

Khi sử dụng TortoiseGit, bạn cần đặt khóa SSH qua hướng của rhythmy. Bạn cần phải làm điều đó cho mỗi kho lưu trữ bạn đang sử dụng TortoiseGit với.


459
2017-11-05 17:18



hướng dẫn của slowy cho tortoisegit sẽ không hoạt động cho đến khi bạn có kho lưu trữ (vì cài đặt cấu hình 'từ xa' không xuất hiện trừ khi bạn hành động trên repo), và bạn có thể không nhận được kho lưu trữ ngay từ đầu nếu bạn có thể ' t xác thực bản thân để sao chép từ nguồn gốc. Khôn lanh! - Kylotan
Với GitBash tôi thấy mình phải sao chép ~/.ssh/id_rsa tập tin để Program Files\Git\.ssh\id_rsa - đó là một chút khó hiểu, nhưng bây giờ IntelliJ và Windows cmd có thể đẩy đến kho git sử dụng xác thực khóa. - JP.
Tương tự như vậy. Tôi chỉ cần cài đặt git-cho-windows, tôi chạy nó từ cmd.exe. Tôi cần phải đặt các tập tin id_rsa và id_rsa.pub vào c:\program files (x86)\Git\.ssh . Các .ssh dir đã có mặt rồi. Cảm ơn, JP. - Cheeso
Đoạn thứ hai là vàng. :) - Bjørn
@ Damon: Nó phải là id_rsa mà không có phần mở rộng. Đó là tên tập tin, nó không phải là một thư mục - Dan McClain


Sử dụng trình khách SSH tích hợp đi kèm với Git cho Windows, bạn cần thiết lập biến môi trường HOME để máy khách Git SSH có thể tìm thấy khóa.

Ví dụ, trên một Windows Vista cài đặt, điều này sẽ được thực hiện bằng cách phát hành setx HOME c:\Users\admin\ trên dòng lệnh.

Nó làm cho ngày của tôi và cố định vấn đề với Git miễn là khóa riêng của bạn không được bảo vệ bằng mật khẩu. Nếu bạn muốn sử dụng ssh-agent, thì bạn có thể chạy ssh-agent cmd.exe (mặc dù tôi chưa bao giờ làm điều đó) và ssh-add như bình thường.

Lưu ý rằng tất cả các công cụ Git / SSH được cho là chạy từ cmd.exe để không chớp mắt cửa sổ.

Nếu điều này không hoạt động chính xác, có thể sử dụng plink bằng cách tinh chỉnh GIT_SSH. Tham khảo tất cả các hướng dẫn SVN + ssh; điều này về cơ bản là hệ thống ống nước bạn cần thiết lập.


101
2017-11-05 18:24



Đây là những gì tôi đang tìm kiếm vì tôi đang cố gắng sử dụng dấu nhắc lệnh của Windows, chứ không phải git bash. - John Ruiz
Nice, sửa chữa dễ dàng nhưng nó sẽ rất khó để tìm ra mà không có điều này! - thaddeusmt
Điều quan trọng là không có khoảng trống giữa HOME = và c: \ ... giải pháp của Oct đã thực hiện thủ thuật cho tôi. :-) - Lutz
Các setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use cmd` thay thế. - trejder
+1 GIT_SSH=c:\pathto\plink.exe - Nick Grealy


Bạn có thể chỉ định vị trí chính cho TortoiseGit theo cách sau:

  • Mở một cửa sổ Explorer.
  • Mở Contextmenu và điều hướng TortoiseGit → Cài đặt
  • Trong cửa sổ hiện đã mở, điều hướng đến Git → Xa
  • Đặt đường dẫn đến khóa PuTTY của bạn trong hộp nhập tương ứng.

Ảnh chụp màn hình bên dưới:

Enter image description here


48
2017-11-05 14:07



Ngoài ra, nếu bạn cần chuyển đổi khóa cá nhân của mình thành định dạng '.ppk' từ định dạng khác, bạn có thể theo dõi ĐIỀU NÀY - Tariq M Nasim
Nó làm việc cho tôi. - Maxim Eliseev
Git> Từ xa chỉ xuất hiện khi bạn đã sao chép thành công kho lưu trữ. - Steve Pitchers
Một giải pháp dễ dàng hơn nhiều là thiết lập mọi thứ hoạt động bình thường trong git (sử dụng openSSH), và sau đó yêu cầu TortoiseGit sử dụng ssh.exe được sử dụng bởi git. Xem stackoverflow.com/a/33328628/318317 Bằng cách đó, bạn chỉ cần sửa lỗi này một lần. - Daniel Rose


Không có câu trả lời nào trước đây phù hợp với tôi. Đây là những gì làm việc cho tôi cuối cùng. Nó thực sự là khá đơn giản, nếu bạn biết những gì để gõ. Nó không cần PuTTY.

  • Mở lời nhắc Git Bash
  • Nhập 'ssh-keygen'
    • Chấp nhận vị trí mặc định
    • Chọn cụm mật khẩu trống (vì vậy chỉ cần nhấn 'enter' cho tất cả các câu hỏi ')
  • Bây giờ hãy sao chép khóa công khai vào máy chủ của bạn, ví dụ: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Đó là một chút trên máy tính của bạn. Hiện nay ssh vào máy chủ đích, sau đó thực hiện

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

Đó là nó! Bạn đã hoàn tất! Từ Git Bash, hãy làm như sau để kiểm tra:

ssh someuser@someserver.com ls

Nếu nó liệt kê các tập tin trong thư mục chủ của bạn trên máy chủ Git, và sau đó bạn đã hoàn tất!

Đối với GitHub, bạn không có quyền truy cập shell vào máy chủ của họ, nhưng bạn có thể tải khóa bằng cách sử dụng trang web của họ, vì vậy đối với bit 'now copy to your server', hãy làm:

  • Trong Git Bash, gõ 'cat ~ / .ssh / id_rsa.pub', chọn kết quả, và sao chép nó vào clipboard.
  • Trên trang web GitHub, hãy vào 'Cài đặt tài khoản', 'Khoá SSH và GPG', nhấp vào 'Khoá SSH mới' và dán khóa.

45
2018-04-25 01:32



Không tạo khóa mà không có cụm mật khẩu. Nó giống như đặt mật khẩu của bạn trong một tệp văn bản, ngoại trừ việc mọi người đều biết vị trí mặc định cho các khóa riêng tư. - GregB
Bạn đang trả lời câu hỏi sai. Q là cách trỏ đến một khóa riêng hiện có. - Orangutech
@ GregB, tôi nhìn vào nó như thế này: bất kỳ máy chủ mà tôi tạo ra một mật khẩu ít hơn là an toàn như máy tính xách tay của tôi, đó là một phần mở rộng của chu vi an ninh của máy tính xách tay của tôi. Trên thực tế, thậm chí, kể từ khi thư mục nhà của tôi được mã hóa ;-) Vì vậy, nó an toàn như phân vùng nhà được mã hóa trên máy tính xách tay của tôi, đó là 'đủ tốt' để đảm bảo truy cập vào github, theo ý kiến ​​của tôi. (có thể khác với ý kiến ​​của bạn tất nhiên!) - Hugh Perkins
@ GregB Đừng rơi vào hoang tưởng! :] Chắc chắn, việc sử dụng các khóa được bảo vệ bằng mật khẩu an toàn hơn nhiều so với sử dụng mật khẩu ít hơn, nhưng cho rằng khóa mật khẩu dễ bị phá vỡ vì lưu trữ mật khẩu trong tệp văn bản là hiển nhiên sai. Tôi đã thấy nhiều hướng dẫn, khuyến khích người dùng sử dụng các khóa được bảo vệ bằng mật khẩu, nhưng tôi chưa bao giờ thấy bất kỳ xác nhận quyền sở hữu nào, việc sử dụng chúng mà không có mật khẩu thì không an toàn chút nào. Ngoài ra: một số hệ thống không hỗ trợ các giải pháp ghi nhớ mật khẩu của khóa, được người dùng nhập và yêu cầu, mỗi lần sử dụng khóa. Điều này làm cho việc sử dụng các khóa SSH vô nghĩa trong tình huống này. - trejder
Vì lợi ích của cuộc trò chuyện, mà đã lệch khỏi câu hỏi ban đầu, các khóa SSH chắc chắn an toàn hơn mật mã hơn mật khẩu, nhưng bảo mật đó có nguy cơ không mã hóa các khóa SSH của bạn. Cách tiếp cận cá nhân của tôi là mở khóa các khóa của tôi vào đầu ngày bằng cách sử dụng một tác nhân SSH, sau đó giữ các khóa đã giải mã trong bộ nhớ để tôi không cần phải nhập lại mật khẩu trong suốt cả ngày. Như @Hugh Perkins bình luận, và tôi diễn giải, tất cả các bạn đều biết yêu cầu bảo mật của mình tốt hơn tôi / chúng tôi làm :). - GregB


Nếu bạn đang sử dụng msysgit với các công cụ OpenSSH, bạn cần phải tạo ra ~/.ssh/id_rsahoặc tạo cấu hình Git trong ~/.ssh/config mà chỉ vào chìa khóa của bạn.

Dưới đây là một ví dụ về cấu hình Git cho Bitbucket sẽ sử dụng tên người dùng chính xác và khóa khác ngoài khóa mặc định (trong trường hợp bạn duy trì một khóa cho kết nối SSH và một khóa khác cho tài khoản Git).

~ / .ssh / config:

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Khi đã ở trong Git Bash, bạn có thể chạy hai lệnh để thêm khóa của bạn vào ssh-agent của phiên làm việc hiện tại của bạn để tránh phải nhập lại mật khẩu của khóa nhiều lần.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

34
2018-04-11 06:34



Tôi đã làm điều này nhưng đối với github.com: Host github.com IdentityFile ~ / .ssh / github_rsa - Sarah Vessels
Nếu bạn có một không gian trong đường dẫn của bạn, bạn phải sử dụng dấu ngoặc kép: IdentityFile "/ C / My Keys / key" - r03
Tôi thích cách này, bởi vì điều này cho phép tôi kết nối nhanh các khóa đã tồn tại từ các PC khác - Kirill Gusyatin
My .gitconfig có các phần. Theo phần nào tôi nên đặt các máy chủ này? - Steve Yakovenko


Tôi chỉ đặt% HOME% =% HOMEPATH%

Điều này có lợi thế là làm việc cho tất cả người dùng đăng nhập vào hệ thống (mỗi người dùng có các thư mục .ssh riêng biệt).

Trong Vista:

  1. Nhấp chuột phải vào Máy tính
  2. Chọn thuộc tính
  3. Nhấp vào Cài đặt hệ thống nâng cao
  4. Nhấp vào Biến môi trường
  5. Trong phần dưới cùng (Biến hệ thống) Nhấp vào Mới
  6. Đối với loại tên biến: TRANG CHỦ
  7. Đối với loại đường dẫn biến:% HOMEPATH%
  8. Nhấp vào OK

14
2017-10-12 01:26



Trong trường hợp của tôi, tôi đã thêm HOME =% USERPROFILE% - igor
Lưu ý rằng %HOMEPATH% không chứa ký tự ổ đĩa, vì vậy nếu nguồn của bạn không bật C: bạn cần phải thêm vào C: đến %HOME%. - Graeme Perrow


Khóa riêng của bạn cần được thêm vào tác nhân SSH trên máy trạm của bạn. Làm thế nào bạn đạt được điều này có thể phụ thuộc vào những gì git khách hàng bạn đang sử dụng, tuy nhiên puTTY và đại lý liên quan của nó (pageant) có thể làm các trick cho bạn, đây là liên kết đến các nhị phân chính thức và nguồn:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


7
2017-10-25 17:38



Tôi đã nói ở trên rằng tôi đang sử dụng Git cho Windows và đang sử dụng ssh.exe (đóng gói w / git) thay cho putty. Phải có một số thực hành tiêu chuẩn để thêm một khóa riêng, tôi dường như không thể tìm ra cách. Trong khi chuyển đổi phần mềm thực sự có thể cho phép tôi đăng nhập, thì phải có cách để làm điều đó với thiết lập Git chuẩn, phải không? - binaryorganic
Xin lỗi tôi không làm việc trên windows, chỉ linux. Nhưng điều quan trọng không phải là trong đại lý SSH của bạn. là có một agent.exe hoặc một cái gì đó dọc theo những dòng? - Declan Shanaghy
Vâng, thiết lập là bánh ở phía linux. Nhưng tôi đã có nó làm việc trên Windows quá không may. Có một số tệp thực thi liên quan đến ssh trong thư mục git / bin trên hộp Windows (ssh, ssh-add, ssh-agent, ssh-keygen và ssh-keyscan), nhưng tôi không biết cách tạo bất kỳ tệp nào trong số chúng làm bất cứ gì. Họ chỉ cần nhấp một cửa sổ cmd mở và đóng ngay lập tức. Tôi bối rối. - binaryorganic
Cuộc thi thực sự giải quyết vấn đề cho tôi - Tôi có một shortcut trong thư mục Startup của Start Menu (C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) chỉ đến "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", để nó tải các khóa SSH của tôi khi khởi động và điều này làm cho GIT "chỉ hoạt động": o) - Owen Blacker
@OwenBlacker OMFG! Bạn chắc chắn nên viết nhận xét này dưới dạng kích thước đầy đủ câu trả lời! Đây là giải pháp duy nhất ở đây, điều đó thực sự đã giúp tôi và giải quyết vấn đề của tôi! Thật đáng tiếc, tôi có thể chỉ cung cấp cho bạn +1! :] - trejder