Làm cách nào để chuyển đổi khóa .ppk sang khóa OpenSSH trong Linux?


188

Tôi biết rằng có thể chuyển đổi .ppk theo puttygen trong Windows, nhưng làm thế nào để làm điều đó trên Linux? Điều này có thể không?

Câu trả lời:


275

Làm điều đó với Putty.

  • Linux: với trình quản lý gói của bạn, cài đặt PuTTY (hoặc các công cụ PuTTY tối thiểu hơn):

    • Ubuntu sudo apt-get install putty-tools
    • Giống như Debian apt-get install putty-tools
    • Dựa trên RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • Vân vân.
  • OS X: Cài đặt Homebrew , sau đó chạybrew install putty

Đặt chìa khóa của bạn trong một số thư mục, ví dụ thư mục nhà của bạn. Bây giờ chuyển đổi các khóa PPK thành keypairs SSH: tìm kiếm bộ đệm

Để tạo ra các tin chính:

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

và để tạo ra công chính:

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Di chuyển các khóa này sang ~/.sshvà đảm bảo các quyền được đặt thành riêng tư cho khóa riêng của bạn:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Nếu bạn đã cố gắng thực hiện thao tác ' git clone ', bạn cũng có thể cần phải thực hiện việc này

chmod 666 ~/.ssh/known_hosts

xin chào, tôi đã có .pub rồi, cần phải tạo lại khóa công khai
Amit Bera

1
Nếu bạn đến đây để tìm cách thực hiện trong windows, hãy chạy "puttygen yourkey.ppk", sau đó trong menu Conversions chọn "Xuất khóa OpenSSH" để lấy khóa riêng.
Ryan Shillington

1
giải pháp từ @jous đẹp hơn nhiều vì bạn không cần khóa riêng để chuyển đổi khóa chung + bạn không cần cài đặt putty
Tobi

Tôi đã phải thêm khóa này vào ./ssh/configtập tin của mìnhHost mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
vladkras

Một số định dạng đường cong elliptic (ECDS, v.v.) chỉ có sẵn trong các công cụ putty beta.
Daniel W.

39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i cờ được nhập từ định dạng openssh
  • -f cờ có nghĩa là đọc từ tập tin đầu vào

Nguồn: một blogpost tại burnz.wordpress.com


17
Các tệp .ppk là các cặp khóa đầy đủ, tôi không nghĩ lệnh ở trên hoặc bài đăng trên blog áp dụng cho điều đó.
Peter Becker

2
Tôi nghĩ rằng tôi có nghĩa là nó hoạt động nếu bạn sử dụng nút "Lưu khóa công khai" của puttygen. ssh-keygen không hiểu các tệp .ppk thực sự vì chúng thiếu các dấu '---- BEGIN SSH2 PUBLIC KEY ----'. Bạn có thể tìm thấy khóa công khai trong tệp .ppk giữa các dòng "Public-Lines: .." và "Private-Lines: ..".
jous

1
Điều này làm việc cho tôi với một tệp khóa công khai - puttygen dường như yêu cầu một khóa riêng. có vẻ như tất cả những gì nó đã làm là sắp xếp lại phần cơ sở 64 thành một dòng duy nhất
Jasen

2
Điều này dường như không bao gồm các khóa riêng tư, đó là lý do tại sao tôi muốn thực hiện chuyển đổi, tôi đã có một khóa công khai được lưu ở đâu đó ...
Gert van den Berg

Vâng, các tệp ppk tôi thấy đã có các điểm đánh dấu thích hợp và điều này đã hoạt động tốt .
tylerl

5

Lấy khóa riêng:

mở tệp .ppk trong puttygen:

puttygen ~/.ssh/id_dsa.ppk

xuất dưới dạng openssh:

Chuyển đổi → Xuất khóa OpenSSH

Lấy khóa công khai:

mở như trước khóa riêng với puttygen, khóa chung nằm dưới khóa chung để dán vào tệp OpenSSH ủy quyền


4

Tôi đã chuẩn bị một container Docker để làm cho cuộc sống đơn giản hơn:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \
           czerasz/putty-tools

Ở đâu:

  • /path/to/file.ppk - đường dẫn cục bộ đến tệp ppk của bạn
  • /path/to/output - đường dẫn cục bộ đến nơi cần đặt khóa riêng và khóa chung

1
tuyệt quá. thx cho hình ảnh! tuy nhiên trong khi đó --volume=/path/to/file.ppk:/tmp/id.ppkvà khôngid_dsa.ppk
pHiL
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.