Chuyển đổi khóa riêng OpenSSH thành khóa riêng SSH2


29

Có cách nào để chuyển đổi cặp khóa OpenSSH hiện tại sang cặp khóa SSH2 (định dạng ssh.com) không?

CẬP NHẬT : vì có một số câu trả lời về việc ssh-keygenđột nhiên xuất hiện, tôi sẽ giải thích tôi đến từ đâu (cũng sẽ là một câu trả lời hay về "bạn đã thử gì?").

$> diff --report-identical-files <(ssh-keygen -e -f ~/.ssh/id_dsa) <(ssh-keygen -e -f ~/.ssh/id_dsa.pub)
Files /tmp/zshAGGWAK and /tmp/zshPZiIr6 are identical

Nói cách khác, ssh-keygentrả về cùng một khóa cho khóa đầu vào riêng tư và công khai (băm của các tệp gốc rõ ràng là khác nhau, tôi đã kiểm tra chúng hai lần để đảm bảo rằng chúng là khóa riêng và khóa chung hợp lệ). Dường như ssh-keygenchỉ tạo khóa chung cho khóa đầu vào riêng hoặc chung.

Tôi đang làm sai hay đó là một hành vi bình thường?

Câu trả lời:


43

Hướng dẫn này có tiêu đề: SSH: Chuyển đổi OpenSSH sang SSH2 và ngược lại xuất hiện để cung cấp những gì bạn đang tìm kiếm.

Chuyển đổi khóa OpenSSH sang khóa SSH2

Chạy phiên bản OpenSSH ssh-keygentrên khóa công khai OpenSSH của bạn để chuyển đổi nó thành định dạng cần thiết của SSH2 trên máy từ xa. Điều này phải được thực hiện trên hệ thống chạy OpenSSH.

$ ssh-keygen -e -f ~/.ssh/id_dsa.pub > ~/.ssh/id_dsa_ssh2.pub

Chuyển đổi khóa SSH2 thành khóa OpenSSH

Chạy phiên bản OpenSSH ssh-keygentrên khóa công khai ssh2 của bạn để chuyển đổi nó thành định dạng cần thiết của OpenSSH. Điều này cần phải được thực hiện trên hệ thống chạy OpenSSH.

$ ssh-keygen -i -f ~/.ssh/id_dsa_1024_a.pub > ~/.ssh/id_dsa_1024_a_openssh.pub

Hướng dẫn tiếp tục chỉ ra cách tạo cả hai loại khóa khác nhau và cách xuất chúng sang các định dạng khác.

Sử dụng cái này cho khóa riêng & công khai?

Theo trang người đàn ông, câu trả lời sẽ là có. Nhìn vào trang man cho ssh-keygennó biết các công -etắc sau:

 -e    This option will read a private or public OpenSSH key file and print
       the key in RFC 4716 SSH Public Key File Format to stdout.  This option
       allows exporting keys for use by several commercial SSH implementations.

Nhưng trong thực tế, có vẻ như ssh-keygenkhông thể chuyển đổi khóa riêng, chỉ có khóa công khai.

Ví dụ:

# Make a new RSA key-pair
$ ssh-keygen -t rsa -f newkey

# attempt to extract the private key
$ ssh-keygen -e -f newkey > newkey_e

# attempt to extract the public key
$ ssh-keygen -e -f newkey.pub > newkey.pub_e

# Notice the supposed extracted private key (newkey_e) and the corresponding extracted public key (newkey.pub_e) have identical `md5sum`'s.
$ for i in *;do md5sum $i;done
d1bd1c12c4a2b9fee4b5f8f83150cf1a  newkey
8b67a7be646918afc7a041119e863be5  newkey_e
13947789d5dcc5322768bd8a2d3f562a  newkey.pub
8b67a7be646918afc7a041119e863be5  newkey.pub_e

Nhìn vào các khóa trích xuất kết quả xác nhận điều này:

$ grep BEGIN newkey_e newkey.pub_e 
newkey_e:---- BEGIN SSH2 PUBLIC KEY ----
newkey.pub_e:---- BEGIN SSH2 PUBLIC KEY ----

Googling một chút Tôi đã tình cờ thấy điều này từ một bài viết có tiêu đề: Làm thế nào để bạn chuyển đổi các tệp khóa riêng tư OpenSSH sang SSH . Trang web dường như lên xuống nhưng khi tìm kiếm trong bộ nhớ cache của Google cho trang này, tôi đã tìm thấy những điều sau đây:

Làm cách nào để chuyển đổi các tệp khóa riêng tư OpenSSH sang các tệp khóa riêng của SSH.com?

Nó không thể được thực hiện bởi chương trình ssh-keygen mặc dù hầu hết các trang man nói rằng nó có thể. Họ không khuyến khích bạn sử dụng nhiều khóa công khai. Vấn đề duy nhất là RCF sẽ không cho phép bạn đăng ký nhiều hơn một khóa công khai.

Bài viết tiếp tục đề cập đến một phương pháp để chuyển đổi khóa riêng mở sang khóa riêng ssh.com thông qua việc sử dụng công cụ của PuTTY puttygen . LƯU Ý: puttygen có thể chạy từ Windows & Linux.

Mở 'puttygen' và tạo cặp khóa công khai / riêng tư 2048 bit rsa. Hãy chắc chắn rằng bạn thêm mật khẩu sau khi nó được tạo. Lưu khóa công khai là "puttystyle.pub" và lưu khóa riêng dưới dạng "puttystyle". Chương trình putty và chương trình SSH.com có ​​chung định dạng khóa chung nhưng chương trình putty và OpenSSH có các định dạng khóa chung khác nhau. Chúng tôi sẽ quay lại vấn đề này, sau. Bạn sẽ có thể tải cả hai phím puttystyle vào chương trình putty. Tuy nhiên, các định dạng khóa riêng cho putty và SSH.com không giống nhau và do đó bạn sẽ phải tạo một tệp được chuyển đổi. Chuyển đến menu chuyển đổi và xuất khóa SSH.com. Lưu nó dưới dạng "sshstyle". Bây giờ hãy quay lại menu chuyển đổi và xuất khóa openssh. Lưu nó dưới dạng "openssh". Những cái tên này là tùy ý và bạn có thể chọn tên của riêng bạn. Sau này, bạn sẽ phải thay đổi tên để cài đặt trên máy OpenSSH. Xem bên dưới.

Với những điều trên tôi đã sử dụng các cách sau bằng cách sử dụng puttygencặp khóa công khai / riêng tư được tạo trước đó của chúng tôi:

# generate ssh.com private key from private openssh key
$ puttygen newkey -O private-sshcom -o newkey.puttygen-sshcom

# generate ssh.com public key from private openssh key
$ puttygen newkey -O public -o newkey.pub_puttygen-sshcom

# generate openssh public key from private openssh key (for confirmation)
$ puttygen newkey -O public-openssh -o newkey.pub_puttygen-openssh

Nhận xét là khác nhau, do đó bạn không thể so sánh các tệp kết quả, vì vậy nếu bạn nhìn vào một vài dòng đầu tiên của khóa, đó là một dấu hiệu khá tốt cho thấy các lệnh trên đã thành công.

So sánh các khóa ssh.com công khai:

$ tail -n +3 newkey.pub_e | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb

$ tail -n +3 newkey.pub_puttygen-sshcom | head -1 | cut -c 1-60
AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wb

So sánh các khóa mở công khai:

$ cut -c 1-100 newkey.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

$ cut -c 1-100 newkey.pub_puttygen-openssh 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFkZdpmbze9c6pT883rE1i64TJd4wbz9x/w6I2DmSZVI9TJa6M9jgGE952QsOY

3
và những gì về chuyển đổi khóa riêng ?
ДМИТРИЙ МАЛИКОВ

@ CÂU HỎI THƯỜNG GẶP - Tại sao điều đó lại quan trọng? Tôi đã thử nó và nó dường như hoạt động cho cả khóa riêng hoặc khóa chung.
slm

1
Không chắc chắn rằng nó trả về khóa riêng hợp lệ cho tôi : $> a="$(ssh-keygen -e -f ~/.ssh/id_rsa)m"; b="$(ssh-keygen -e -f ~/.ssh/id_rsa.pub)m"; md5sum <<< $a; md5sum <<< $b ce615aa3e39e274d0bd81064399cedf8 - ce615aa3e39e274d0bd81064399cedf8 -. Băm của các tập tin gốc là khác nhau, obv. Có vẻ như nó trả về khóa chung cho khóa đầu vào riêng hoặc chung.
ДМИТРИЙ МАЛИКОВ

@ CÂU HỎI THƯỜNG GẶP Bạn đã đúng đó ssh-keygenlà trả lại khóa công khai. Tôi đã tìm ra một phương pháp dựa trên nghiên cứu bổ sung. LMK nếu nó được chấp nhận.
slm

1
Các thuộc tính puttygen có thể khó: puttygen <OpenSSH_priv_key> -O public -o id_rsa_ssh2_puttygen{.pub}( -Oviết tắt của kiểu đầu ra và tệp-o đầu ra ). Điều đó tạo ra khóa riêng và khóa công khai ssh2 từ khóa riêng tư OpenSSH 7.0 tạo rsa 2048 bit. Không hoạt động trên máy khách Win Phone 7.5 (* Máy khách SSH của Tommi Pirttiniemi). Nhưng cảm ơn bạn đã có một câu trả lời tuyệt vời. @Otheus puttygen đi kèm với Arch. putty
tuk0z

1

ssh-keygensẽ không xuất khóa riêng ở định dạng pem, nhưng nó sẽ chuyển đổi khóa riêng mở ra sang định dạng pem, ghi đè lên bản gốc. Tất cả bạn phải làm là chỉnh sửa mật khẩu.

Lệnh để chuyển đổi ~/.ssh/id_rsatệp của bạn từ định dạng OpenSSH sang định dạng SSH2 (pem) là:

ssh-keygen -p -f ~/.ssh/id_rsa -m pem

Sau đó cung cấp cụm mật khẩu (cũ) và mật khẩu mới tại dấu nhắc. Chúng có thể giống nhau, hoặc thậm chí cả hai đều trống. Hoặc bạn có thể cung cấp chúng trên dòng lệnh bằng cách sử dụng các tùy chọn -P(cụm mật khẩu cũ) và -N(cụm mật khẩu mới). Ví dụ: nếu cụm mật khẩu trống và bạn muốn giữ nguyên cụm từ đó:

ssh-keygen -p -P '' -N ''-f ~/.ssh/id_rsa -m pem
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.