'ssh-keygen' không được nhận dạng là lệnh nội bộ hoặc lệnh bên ngoài


103

tôi chạy git push -u origin master

Nó cho tôi biết rằng "Quyền bị từ chối (khóa công khai) nghiêm trọng: Đầu điều khiển từ xa bị treo đột ngột"

Sau đó, tôi tìm kiếm trên internet và thấy rằng tôi phải tạo khóa ssh cho tài khoản của mình trên GitHub. Tuy nhiên, khi làm như vậy, khi tôi cố gắng thực hiện ssh-keygen -t rsa "email@youremail.com", nó chỉ đơn giản là ssh-keygen không được nhận dạng. Tôi đã thử thực hiện mkdir C: \ ssh nhưng không hiệu quả. Nếu nó hữu ích, tôi đang sử dụng Ruby Rails và tôi đang sử dụng máy tính Windows. Có ai giúp tôi không?

Câu trả lời:


133

2012:
ssh-keygen.exelà một phần của msysgit :

 C:\path\to\msysgit1.7.11\bin\ssh-keygen.exe

nếu bạn %PATH%bao gồm C:\path\to\msysgit1.7.11\bin\, bạn sẽ có ssh-keygen.


Cập nhật 2015:
ssh-keygen.exelà một phần của Git dành cho Windows , có các bản phát hành bao gồm PortableGit-2.4.3.1-2nd-release-application-64-bit.7z

c:\path\to\PortableGit-2.4.3.1-2nd-release-candidate-64-bit\usr\bin\ssh-keygen.exe

Điều đó có nghĩa là %PATH%phải bao gồm c:\path\to\PortableGit-2.4.3.1-2nd-release-candidate-64-bit\usr\bin(không có ssh-keygen.exe)

Như tôi đã giải thích trước đây , Git cho Windows sẽ sớm loại bỏ msysgit.
Tôi đã trình bày chi tiết trong " Tại sao nếu bạn tải xuống Git 2.0 từ mạng, bạn luôn nhận được gói trình cài đặt 1.9.4? " Phiên bản mới này dựa trên dự án msys2 gần đây hơn như thế nào .


Có an toàn khi có ssh-keygen.exetrong PATH trên Windows không? Tôi có cần xóa vị trí của nó sau đó không?
Màu xanh lá cây

@Green thực tế là một phần của Windows PATHchỉ trong phiên của bạn với git, vì bạn đang khởi chạy phiên DOS đặc biệt với git-cmd.bat: github.com/msysgit/msysgit/blob/master/git-cmd.bat . Nó sẽ hoàn thành PATHvà thiết lập HOME.
VonC

Về mặt thực tế, con đường không nên có ssh-keygen.exe. Ý tôi là, nó chỉ hoạt động theo cách này đối với tôi.
alexander

1
@alexander Tôi đồng ý và tôi đã chỉnh sửa câu trả lời để hiển thị rõ hơn.
VonC

7
đối với tôi, con đường làC:\Program Files (x86)\Git\usr\bin
rupinderjeet

65

Tôi vừa gặp vấn đề này và nghĩ rằng tôi sẽ chia sẻ những gì tôi nghĩ là một cách dễ dàng hơn để giải quyết vấn đề này.

Mở git-bash và chạy lệnh tương tự với việc bổ sung -C vì bạn đang nhận xét trong địa chỉ email của mình: ssh-keygen -t rsa -C "email@youremail.com"lệnh. Đó là nó.

git-bash lẽ ra phải được cài đặt khi bạn cài đặt git. Nếu bạn không thể tìm thấy nó, bạn có thể kiểm tra C: \ Program Files \ Git \ Git Bash

Lần đầu tiên tôi làm điều này, nó không thể tạo thư mục .ssh cho tôi, vì vậy tôi phải mở Command Prompt chuẩn và mkdir C: \ Users \ yourusername \ .ssh


15
1 cho không gợi ý cài đặt một gói phần mềm
Chip McCormick

2
1 đây là một giải pháp tốt hơn bởi vì không cần phải cài đặt khác
guoleii

Khóa của tôi không được lưu trong .sshthư mục. Nó đã được lưu trong cùng một thư mục như Git Bashtồn tại.
Ahmad Behzadi

51

Tôi đã làm theo bên dưới trong cửa sổ (Với Git cho Windows được cài đặt)

  1. Chạy "Git Gui" (Bắt đầu -> Git -> Git Gui)
  2. Bấm Trợ giúp và sau đó Hiển thị Khóa SSH
  3. Nhấp vào Tạo khóa nếu bạn chưa có

Lưu ý: - điều này tạo ra các tệp chính trong thư mục hồ sơ cá nhân của bạn C: \ Users \ YourUserID \ .ssh \

nhập mô tả hình ảnh ở đây


Câu trả lời tuyệt vời - một cách dễ dàng để tạo khóa SSH mới - TY :)
gav_aus_web

9

Tôi đã tìm thấy một giải pháp dễ dàng để khắc phục điều này:

Trong dấu nhắc lệnh, hãy chuyển đến thư mục git \ bin, rồi thực hiện các lệnh của bạn từ đây


6
Trên hệ thống của tôi, Windows 10, ssh-keygen.exe được tìm thấy trong 'git \ usr \ bin'.
Tarabass

9

Không cần thêm bất cứ điều gì vào các biến môi trường! Chỉ cần mở git bash và thực hiện lệnh ssh-keygen trong đó.

Link tải git bash tại đây


8

Nếu bạn đã cài đặt Git và được cài đặt tại C: \ Program Files, hãy làm theo như bên dưới

  1. Đi tới "C: \ Program Files \ Git"
  2. Chạy git-bash.exe, thao tác này sẽ mở ra một cửa sổ mới
  3. Trong cửa sổ bash mới, hãy chạy "ssh-keygen -t rsa -C" "
  4. Nó nhắc nhở về tệp để lưu khóa, không nhập bất kỳ giá trị nào - chỉ cần nhấn enter
  5. Tương tự cho cụm mật khẩu (hai lần), chỉ cần nhấn enter
  6. id_rsa và id_rsa.pub sẽ được tạo trong thư mục chính của bạn dưới .ssh

4

Chỉ cần truy cập heroku.bat và thêm:

@SET PATH="D:\Program Files (x86)\Git\bin";%PATH% sau @SET PATH=%HEROKU_RUBY%;%PATH%

trong trường hợp của tôi, nó nằm trong D: \ Program Files (x86) \ Git \ bin, hãy thay đổi nó thành đường dẫn bạn đã cài đặt Git. (Tôi chỉ để lại nó với con đường của tôi nên sẽ rõ ràng hơn về cách viết cái này)


3

Tôi nghĩ rằng bạn có thể thêm vị trí của tệp ssh-keygen.exe trong biến môi trường PATH. Làm theo các bước: Đi tới Máy tính của tôi-> Nhấp chuột phải-> Thuộc tính-> Cài đặt hệ thống nâng cao-> Nhấp vào Biến môi trường. Bây giờ nhấp vào PATH và sau đó nhấp vào EDIT. Trong trường giá trị biến, đi đến cuối và thêm '; C: \ path \ to \ msysgit1.7.11 \ bin \ ssh-keygen.exe' (không có dấu ngoặc kép)


3

không làm bất cứ điều gì chỉ cần gõ vào dấu nhắc lệnh

C:\> sh

sau đó bạn có như thế này

sh-4.4$ 
# type here 
ssh-4.4$ ssh-keygen -t rsa -b 4096 -C "example@example.com"

điều này phải hoạt động.


2

Đối với cửa sổ, bạn có thể thêm cái này:

SET PATH="C:\Program Files\Git\usr\bin";%PATH%



0

cho những người không chọn tùy chọn BASH HERE. gõ sh trong cmd thì chúng sẽ có thể truy cập ssh-keygen.exe


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.