Khóa SSH của Windows 10


112

Tôi thực sự gặp khó khăn trong việc thiết lập và chạy các khóa SSH của mình sau khi cài đặt Windows 10. Phương pháp thông thường là tạo nó và ném nó vào tài khoản của người dùng dưới .ssh. Thư mục này dường như không khả dụng trong Windows 10.

Có ai khác gặp phải điều này không? Tôi cần có 3 khóa SSH cho các repo khác nhau và điều này thực sự khiến tôi khó chịu.


2
Windows 10 có ẩn thư mục dấu chấm không?
Leland Barton

Không, đó là những gì tôi đã nghĩ lúc đầu, nhưng nó đã thêm một vài thứ kể từ khi cài đặt.
Rudenate

2
Vui lòng chuyển câu hỏi của bạn đến Super User . Nó lạc đề ở đây.
Martin Prikryl

3
@MartinPrikryl Vì rất nhiều mã trên Linux, sử dụng Github, v.v. liên quan đến các khóa ssh và .ssh, tôi cho rằng nó rất có chủ đề đối với Stackoverflow.
haziz

2
Tôi đồng ý với Martin. Câu hỏi lập trình là một câu hỏi về cách viết một chương trình, không phải bất kỳ câu hỏi nào mà một lập trình viên có thể hỏi.
Bacon Bits

Câu trả lời:


130
  1. Mở dòng lệnh windows (gõ "cmd" trên hộp tìm kiếm và nhấn enter).
  2. Nó sẽ mặc định là thư mục chính của bạn, vì vậy bạn không cần phải chuyển cdsang một thư mục khác.
  3. Kiểu ssh-keygen
  4. Làm theo hướng dẫn và bạn đã sẵn sàng
  5. Các khóa ssh của bạn nên được lưu trữ tại thư mục đã chọn, mặc định là: /c/Users/YourUserName/.ssh/id_rsa.pub

ps: Nếu bạn đã cài đặt git có tích hợp bash (như tôi), hãy mở "Git Bash" thay vì "cmd" ở bước đầu tiên


36
điều này trông tuyệt vời ngoại trừ nó không hoạt động. không có lệnhssh-keygen
roberto Tomás

10
vì một số lý do tôi phải chạy ssh-keygenlệnh trong git-bash shell thay vì cmd-shell.
Olian04

6
Vì vậy, bạn có thể sử dụng Git Bash sheel hoặc git cmd, Bạn không thể sử dụng Windows cmd.
Pavan T

6
Kể từ tháng 12 năm 2018, nó hoạt động hiệu quả trong Win 10 for me
Urs

1
@Suncatcher Có. Để đăng nhập vào Github, DigitalOcean, v.v., bạn cần có khóa công khai nằm trong "id_rsa.pub" trong cùng một thư mục. Mở nó bằng một trình soạn thảo văn bản như notepad và sao chép và dán bất cứ nơi nào bạn cần thêm khóa SSH của mình.
Goose

57

CẬP NHẬT 2019-04-07: Hôm nay tôi đã thử nghiệm với phiên bản windows 10 mới (bản dựng 1809, "bản cập nhật tháng 10 năm 2018") và không chỉ ứng dụng khách SSH đang mở không còn ở phiên bản beta mà nó đã được cài đặt. Vì vậy, tất cả những gì bạn cần làm là tạo khóa và đặt máy khách của bạn sử dụng SSH đang mở thay vì putty (pagent):

  1. mở dấu nhắc lệnh (cmd)
  2. nhập ssh-keygenvà nhấn enter
  3. nhấn enter để tất cả cài đặt. bây giờ khóa của bạn được lưu trong c: \ Users \ .ssh \ id_rsa.pub
  4. Mở ứng dụng git của bạn và đặt nó để sử dụng SSH mở

Tôi đã thử nghiệm trên Git Extensions và Source Tree và nó hoạt động với repo cá nhân của tôi trong GitHub. Nếu bạn đang sử dụng phiên bản windows cũ hơn hoặc thích một ứng dụng khách đồ họa cho SSH, vui lòng đọc phần bên dưới.

2018-06-04 UDPATE:

Trên windows 10, bắt đầu từ phiên bản 1709 (win + R và gõ winverđể tìm số bản dựng), Microsoft đang phát hành bản beta của máy khách và máy chủ OpenSSH. Để có thể tạo khóa, bạn cần cài đặt máy chủ OpenSSH. Để làm điều này, hãy làm theo các bước sau:

  1. mở menu bắt đầu
  2. Nhập "tính năng tùy chọn"
  3. chọn "Thêm một tính năng tùy chọn"
  4. Nhấp vào "Thêm tính năng"
  5. Cài đặt "Open SSH Client"
  6. Khởi động lại máy tính

Bây giờ bạn có thể mở một lời nhắc và ssh-keygenứng dụng khách sẽ được cửa sổ nhận dạng. Tôi đã không thử nghiệm này. Nếu bạn không có windows 10 hoặc không muốn sử dụng bản beta, hãy làm theo hướng dẫn bên dưới về cách sử dụng putty.


ssh-keygenkhông được cài đặt với các cửa sổ. Đây là cách tạo khóa ssh với Putty:

  1. Cài đặt putty
  2. Mở PuttyGen
  3. Kiểm tra Loại khóa và số byte để sử dụngThông số PuttyGen
  4. Di chuyển chuột qua thanh tiến trình tạo phím với đầu vào chuột
  5. Giờ đây, bạn có thể xác định cụm mật khẩu và lưu các khóa công khai và riêng tư hộp thoại được tạo chính

Đối với khóa openssh, cần thực hiện thêm một số bước sau:

  1. sao chép văn bản từ hộp văn bản "Khóa công khai để dán" và lưu dưới dạng "id_rsa.pub"
  2. Để lưu khóa cá nhân ở định dạng openssh, hãy chuyển đến Chuyển đổi-> Xuất khóa OpenSSH (nếu bạn không xác định khóa mật khẩu, nó sẽ yêu cầu bạn xác nhận rằng bạn không muốn khóa mật khẩu) menu để chuyển đổi khóa sang định dạng OpenSSH
  3. Lưu nó dưới dạng "id_rsa"

Bây giờ các khóa đã được lưu. Bắt đầu pagentvà thêm khóa cá nhân vào đó (tệp ppk ở định dạng Putty) hộp thoại phím trang

Hãy nhớ rằng pagentphải chạy để xác thực hoạt động


6
ssh-keygen được bao gồm trong windows 10, không chắc là phiên bản nào, trong "Quản lý các tính năng tùy chọn"
sebbu

1
@sebbu Thật vậy, Bây giờ trên windows 10, bạn có thể cài đặt bản beta của Open SSH Server trong "Quản lý các tính năng tùy chọn" và điều đó sẽ giúp bạn có được ssh-keygen cùng với một số thứ khác. Nhưng nó không được cài đặt và không dễ tìm. Tôi sẽ cập nhật câu trả lời của tôi.
franksands

1
@KarlMorrison pagent là gui để thực hiện xác thực ssh. nó thường được tìm thấy trong menu bắt đầu.
franksands

1
Bạn không cần cài đặt Open SSH Server. Tính năng Open SSH Client bao gồm ssh-keygen.
Onots

1
@Onots Tôi đã thử nghiệm với phiên bản mới của windows 10 (bản cập nhật tháng 10 năm 2018) và không chỉ mở ứng dụng ssh là đủ mà nó đã được cài đặt sẵn: D Tôi sẽ cập nhật câu trả lời của mình
franksands

31

WINDOWS: Nếu bạn đã cài đặt git cho windows, hãy vào thư mục của nó.

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

Tìm trong thư mục bin. Có một tệp sh.exe. Chạy đi.

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

Sau đó gõ:

ssh-keygen -t rsa -C "email của bạn ở đây"

Làm theo hướng dẫn và sau đó nhập:

mèo ~ / .ssh / id_rsa.pub | kẹp

Nó sao chép chìa khóa vào khay nhớ tạm của bạn. Bây giờ bạn có thể dán khóa công khai đó vào phía máy chủ.


13
  1. Mở dòng lệnh windows (gõ "cmd" trên hộp tìm kiếm và nhấn enter).
  2. Nó sẽ mặc định là thư mục chính của bạn, vì vậy bạn không cần phải chuyển cdsang một thư mục khác.
  3. Kiểu mkdir .ssh

9

Cảnh báo: Nếu bạn đang lưu khóa của mình trong C: /User/username/.ssh (vị trí mặc định), hãy đảm bảo sao lưu khóa của bạn ở đâu đó (ví dụ: trình quản lý mật khẩu của bạn).

Sau Bản cập nhật Windows 10 gần đây nhất (phiên bản 1607), thư mục .ssh của tôi trống. Đây là nơi mà các khóa của tôi luôn ở đó, nhưng Windows đã quyết định xóa chúng khi cập nhật.

Rất may, tôi đã sao lưu chìa khóa của mình ... Nhưng ... tôi cá rằng một số người sẽ hoàn nguyên PC của họ hôm nay.


Vì vậy, hầu hết các ứng dụng mong đợi bạn lưu trữ chìa khóa của mình ở đâu?
wcochran

3
Có lẽ trong thư mục mà windows xóa ngẫu nhiên khi nâng cấp windows 10?
Andrew

8

Tôi đang chạy Microsoft Windows 10 Pro, Phiên bản 10.0.17763 Build 17763 và tôi thấy thư mục .ssh của mình dễ dàng tại C: \ Users \ jrosario \ .ssh mà không cần phải chỉnh sửa quyền hoặc bất kỳ thứ gì (mặc dù trong File Explorer, tôi đã chọn "Hiển thị tệp, thư mục và ổ đĩa ẩn"): nhập mô tả hình ảnh ở đây

Các khóa được lưu trữ trong một tệp văn bản có tên known_hosts, trông giống như sau: nhập mô tả hình ảnh ở đây


5

Tôi đã tìm thấy một ngoại lệ đáng chú ý là trong Windows 10, việc sử dụng tuyến được mô tả chỉ ghi các tệp vào thư mục nếu tên tệp không được chỉ định trong trình tạo ssh-keygen.

việc đặt tên khóa tùy chỉnh khiến các tệp chứa khóa công khai và riêng tư RSA không được ghi vào thư mục.

  • Mở dòng lệnh windows
  • Kiểu ssh-keygen
  • Để trống tên tệp, chỉ cần nhấn quay lại,
  • Đặt cụm mật khẩu của bạn
  • Tạo các tệp chính của bạn. Bây giờ chúng sẽ tồn tại. và được lưu trữ trongc:/Users/YourUserName/.ssh/

( sử dụng Dòng lệnh quản trị và Windows 10 Pro )


@Braineeee phủ định. Thao tác này sẽ KHÔNG ghi đè các khóa của bạn, nếu các khóa hiện đang tồn tại ở đích thì trên Cửa sổ dòng lệnh, nó sẽ hỏi bạn xem bạn có muốn ghi đè các khóa này hay không. Các khóa khác trong cùng một thư mục không có hiệu lực . Tôi biết sau khi đọc bình luận của bạn, tôi đã chạy thử nghiệm và thấy điều này là như vậy.
Martin

Bạn có bao giờ hiểu tại sao không?
Damainman

@Damainman tiếc là tôi đã chưa có một cơ hội để khám phá này nhiều hơn, vì vậy không:-/
Martin

1
Cảm ơn @Martin bạn đã cứu ngày của tôi. Tôi có thể tạo các tệp có tên khác. Chúng tôi phải cung cấp dấu phân cách đường dẫn theo cách unix! Những điều sau đây đã làm việc cho tôi. ssh-keygen -t ed25519 -C "My Github Key" Nhập tệp để lưu khóa (C: \ Users \ bilix / .ssh / id_ed25519): c: \ users \ bilix \ .ssh \ id_ed25519_github
Prakash P

@PrakashP rất vui được trợ giúp!
Martin

4

Tạo khóa riêng tư / công khai:

  1. Mở terminal ( git bash, PowerShell, cmd.exevv)
  2. Gõ vào ssh-keygen
  3. Nhấn enter để lưu tệp mặc định ( ~/.ssh/id_rsa)
  4. Nhấn enter để có cụm mật khẩu mặc định (không có cụm mật khẩu)
  5. Nhấn enter lần nữa
  6. Nhìn vào đầu ra và chắc chắn rằng RSA3072trở lên

Bây giờ bạn đã tạo một cặp khóa riêng tư / công khai.

Đối với GIT, khóa phải có độ mạnh là 2048, phải nằm trong .sshthư mục người dùng và được gọi id_rsaid_rsa.pub. Khi dán các phím ở bất kỳ đâu, hãy đảm bảo sử dụng chương trình không thêm dòng mới như VIM.


2

Cuối cùng tôi đã làm cho nó hoạt động bằng cách chạy mở dòng lệnh với "Run a Administrator" mặc dù tôi đã là quản trị viên và có thể tạo thư mục theo cách thủ công


1

Nếu bạn có Windows 10 với ứng dụng OpenSSH, bạn có thể tạo khóa, nhưng bạn sẽ gặp khó khăn khi sao chép nó vào hộp Linux đích vì lệnh ssh-copy-id không phải là một phần của bộ công cụ ứng dụng khách.

Gặp sự cố này, tôi đã viết một hàm PowerShell nhỏ để giải quyết vấn đề này, mà bạn thêm vào hồ sơ của mình.

function ssh-copy-id([string]$userAtMachine, [string]$port = 22) {   
    # Get the generated public key
    $key = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    # Verify that it exists
    if (!(Test-Path "$key")) {
        # Alert user
        Write-Error "ERROR: '$key' does not exist!"            
    }
    else {  
        # Copy the public key across
        & cat "$key" | ssh $userAtMachine -p $port "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

Bạn có thể lấy ý chính ở đây

Tôi có một bản viết ngắn gọn về nó ở đây


0

Ngoài ra, bạn có thể thử (dành cho Windows 10 Pro) Chạy Powershell với tư cách quản trị viên và nhập ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

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.