Làm cách nào để tôi cài đặt khóa riêng SSH được tạo bởi PuTTYgen?


50

Tôi đã thiết lập máy chủ Linux của mình để chấp nhận các kết nối từ PC tại nhà bằng cách thêm khóa công khai do PuTTYgen tạo vào authorized_keystệp.

Bây giờ tôi đang cố gắng kết nối với cùng một máy, nhưng lần này là từ một máy Ubuntu khác. Tôi phải sử dụng cùng một khóa riêng (vì một lý do kỳ lạ, đừng hỏi ..) và tôi hoàn toàn không biết cách cài đặt nó trên máy khách Ubuntu của mình.

Tôi có phải chuyển đổi nó sang một số định dạng khác không?

Câu trả lời:


25

Tôi không chắc liệu khóa riêng của bạn có hoạt động trong Ubuntu hay không, nhưng nó đáng để thử. chỉ cần sao chép các khóa để /home/yourName/.ssh/đặt tên cho khóa riêng là id_rsavà khóa chung là id_rsa.pub.

Nếu điều đó không hiệu quả, thì bạn có thể tạo cặp khóa ssh của riêng bạn bằng cách sử dụng ssh-keygenvà sao chép khóa chung mới vào máy chủ và ssh như sau

ssh -i ~/.ssh/id_rsa_ubuntu.pub <hostName>

Tôi chưa chơi với nó, nhưng tôi nghe rằng ssh-agent cũng có thể được sử dụng để quản lý các phím ssh.


3
Điều này không hoạt động trong Ubuntu. Tuy nhiên, đảm bảo không ghi đè khóa id_rsa hiện có nếu bạn đã có một khóa (bằng cách sao chép khóa mới ở trên cùng) trừ khi bạn biết bạn không sử dụng khóa cũ.
David Oneill

5
Câu trả lời này hoàn toàn thiếu thông tin, làm thế nào để bạn nhận được id_rsatệp (bằng cách chuyển đổi khóa trong PuTTYgen)
Martin Prikryl

38

Tình cờ, tôi phải làm điều này. Bạn cần phải chuyển đổi các khóa thành định dạng OpenSSH. Lệnh để làm điều đó là:

ssh-keygen -i -f puttygen_key > openssh_key

sau đó bạn có thể sao chép nội dung của openssh_keyvào .ssh/authorized_keysgiống như với khóa SSH thông thường.

Các -itùy chọn là một trong đó nói ssh-keygenđể làm việc chuyển đổi. Các -ftùy chọn cho nó nơi để tìm chìa khóa để chuyển đổi.

Điều này làm việc cho các khóa không được mã hóa . Khóa công khai không được mã hóa, nhưng khóa riêng có thể được mã hóa. Tôi không chắc chắn liệu có cách nào để giải mã khóa riêng, chuyển đổi nó và sau đó mã hóa lại. Việc sử dụng các khóa mới có thể dễ dàng hơn như câu trả lời khác gợi ý (và tôi khuyên bạn nên sử dụng ssh-agentmặc dù điều đó trực giao với vấn đề hiện tại).


1
Câu trả lời này giải quyết vấn đề của tôi. Tôi đã phải chuyển đổi chìa khóa. Cảm ơn
leticia

1
Điều này chỉ giải quyết một phần của vấn đề bằng cách chuyển đổi khóa chung. Tôi cũng đã sử dụng câu trả lời của @ user18617 để chuyển đổi khóa riêng.
ᴠɪɴᴄᴇɴᴛ


@ ÉdouardLopez puttygen_keyphải là khóa chung của bạn, không phải khóa riêng (* .ppk).
endolith

28

Andrew Stacey đã giải thích cách chuyển đổi các khóa thành định dạng OpenSSH trên Linux.

Nếu bạn muốn làm tương tự trên Windows, hãy làm theo các bước sau:

  1. Bắt đầu PuTTYGen.
  2. Nhấp vào "Tải".
  3. Chọn khóa riêng của bạn và nhập cụm mật khẩu.
  4. Từ menu 'Chuyển đổi', chọn "Xuất khóa OpenSSH".
  5. Chọn tên tệp đích.

1
Tôi chỉ muốn nói rằng điều này làm việc cho tôi trên Mac OS X của tôi, mặc dù tôi biết đây là phần Ubuntu. Tôi đã chuyển đổi khóa riêng được tạo trong Windows như được mô tả ở trên, sau đó sao chép nó trong mac của tôi thành ~ / .ssh / id_rsa. chmod id_rsa 600 để giữ Mac không phàn nàn về điều đó.
Richard

24

Cách sử dụng lại các cặp khóa Putty của bạn trong Ubuntu dưới dạng các khóa OpenSSH:

apt-get install putty-tools #Install Putty tools in Linux
cd /my-putty-keys
puttygen mykey-sec.ppk ‐O private‐openssh ‐o my‐openssh‐key.sec
ssh-keygen -i -f mykey-pub.ppk > my-openssh-key.pub

Vì mục đích của bước 4 là thêm khóa công khai của bạn vào * ~. / Ssh / ủy quyền_key *, vì vậy bạn có thể sử dụng khóa bí mật Putty của mình như thế này thay vì thực hiện 4 như một bước trung gian:

puttygen ‐L mykey-sec.ppk >> $HOME/.ssh/authorized_keys

1
về bước 4: nếu tên khóa riêng là mykey-sec.ppk, tên tệp nguồn trong trường hợp này thường sẽ là mykey-sec.pub.
Kinjal Dixit

2
Đặt tên khóa công khai (có lẽ ở định dạng RFC 4716) mykey-pub.ppkkhá khó hiểu, vì .ppktệp có định dạng hoàn toàn khác và được sử dụng cho các cặp khóa (không chỉ khóa công khai).
Martin Prikryl

Dòng puttygen cuối cùng đó hoạt động hoàn hảo với tôi sau khi cài đặt công cụ putty trên debian 9. Các dòng và câu trả lời khác ở đây không hoạt động.
Tim

Thật kỳ lạ là tôi đã nhận được puttygen: unknown output type `private‐openssh'puttygen: cannot handle more than one input filevì vậy tôi đã sao chép các ký tự chính xác từ mã nguồn và đổi tên khóa công khai của mình thành một thứ khác hoàn toàn
CPHPython

khi bạn cố gắng chạy lên, nếu bạn cố chạy các lệnh trong câu trả lời này và nhận được "puttygen: không thể xử lý nhiều hơn một tệp đầu vào", có thể là do ký tự gạch ngang trong "private ‐ openssh" không được dán vào như một dấu gạch ngang ASCII thực tế Vì vậy, puttygen không nhận ra nó. Thay vào đó, hãy tự gõ từ đó và nó sẽ hoạt động.
Matt Styles

9

PuTTY / PuTTYgen sử dụng định dạng cặp khóa riêng. Nó sẽ không hoạt động trên Linux, nơi định dạng các khóa OpenSSH chiếm ưu thế.

  • Trong PuTTYgen, bạn có thể thấy trực tiếp (và sao chép + dán) khóa công khai ở định dạng được sử dụng bởi authorized_keystệp OpenSSH .

  • Bạn có thể sử dụng nút Save khóa công khai để lưu các công then chốt trong việc .pubđịnh dạng (RFC 4716). Trên Linux, tệp thường được đặt tên id_rsa.pub(hoặc id_dsa.pub). Nhưng điều đó thường không cần thiết.

  • Sử dụng khóa Chuyển đổi> Xuất khóa OpenSSH để xuất khóa riêng ở định dạng OpenSSH. Trên Linux, tệp thường được đặt tên id_rsa(hoặc id_dsa) và được lưu trong .sshthư mục.

Xem chính thức Sử dụng PuTTYgen, trình tạo khóa PuTTY .

Bạn cũng có thể sử dụng phiên bản Linux của PuTTYgen để thực hiện chuyển đổi. Phiên bản Linux là dòng lệnh, trái với phiên bản Windows.

puttygen mykey.ppk ‐O private‐openssh ‐o id_rsa

Xem puttygentrang người đàn ông Linux .


2

Tôi tìm thấy một giải pháp rõ ràng hơn.

Khi puttygentạo khóa, sau đó điều hướng đến menu Trên cùng - Chuyển đổi và nhấp vào phím openssh

Nội dung tệp sẽ bắt đầu và kết thúc bằng

-----BEGIN RSA PRIVATE KEY----- 

-----END RSA PRIVATE KEY-----
  • cho người dùng root Sao chép tệp chính đó /root/.ssh/thành id_rsahoặcid_dsa

  • cho người dùng khác Sao chép tệp chính đó /home/user/.ssh/thành id_rsahoặcid_dsa

Ghi chú :

  1. Không cần chỉnh sửa authorized_keys.
  2. Tôi đang sử dụng linux Amazon
  3. Cho phép tập tin 0600

1

* * Hãy cẩn thận và đảm bảo rằng bạn có quyền truy cập bảng điều khiển vào hộp vì nếu bạn không làm đúng, bạn sẽ không thể ssh lại cho đến khi bạn sửa nó từ bảng điều khiển.

Quá trình này dễ dàng hơn nhiều so với bạn nghĩ. Tải cặp khóa công khai / riêng mà bạn đã tạo trong puttygen một lần nữa. Trong puttygen, bạn sẽ nhận thấy một cửa sổ ở giữa màn hình có nội dung: "Khóa công khai để dán vào tệp Open SSH ủy quyền:".

đánh dấu toàn bộ nội dung của hộp và nhấn control-c để sao chép nó.

SSH vào hộp linux của bạn và dán nó vào tệp "/home/username/.ssh/authorized_keys". Tôi thích sử dụng nano và chỉ cần nhấp chuột phải để dán nó vào. Hãy chắc chắn rằng tất cả nằm trên một dòng.

Sửa đổi tệp / etc / sshd_config khi cần và khởi động lại dịch vụ sshd của bạn: "khởi động lại dịch vụ ssh"

Nếu bạn cần một tệp sshd_config mẫu, hãy cho tôi biết và tôi có thể đăng tệp của tôi.

Tôi đã thực hiện điều này trên máy chủ Ubuntu 8.04, 10.04 và 12.04 LTS và nó hoạt động trơn tru.


0

Tôi không chắc liệu chủ đề này có còn hoạt động hay không, nhưng tôi đã vấp phải một vấn đề tương tự với phiên bản kỷ niệm Windows 10 hiện hỗ trợ kernel Ubuntu. Tôi sử dụng để sử dụng Putty trước đây để kết nối với máy Linux. Để tạo id_rsa ở định dạng linux, hãy sử dụng puttykeygen và tải khóa riêng putty của bạn sau đó nhấp vào chuyển đổi và chọn tùy chọn thứ hai.

Putty KeyGenerator conevrsions

mở tệp khóa mới được tạo và sao chép tất cả nội dung của nó, đảm bảo nội dung của bạn bắt đầu bằng: ----- BEGIN RSA PRIVATE KEY ----- và kết thúc bằng ----- END RSA PRIVATE KEY -----

vi id_rsa bên trong thư mục ~ / .ssh của bạn và dán nội dung được sao chép, điều này là bắt buộc vì nếu không linux sẽ không hiểu nội dung của tệp.

Đó là tất cả, hãy thử ssh đến máy chủ từ xa, nó sẽ hoạt động.

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.