Làm thế nào để sử dụng gpg và SSH cùng nhau? [bản sao]


11

Có thể trùng lặp:
Các khóa GPG và SSH có thể hoán đổi cho nhau không?

Làm thế nào để sử dụng gpg và SSH cùng nhau?

Tôi biết các quy trình cơ bản của 1) sử dụng gpg để mã hóa và giải mã các tệp văn bản và 2) tạo và sử dụng các khóa SSH để truy cập các máy chủ từ xa mà không cần mật khẩu.

Tôi tự hỏi nếu hai có thể được tích hợp. Có phải hai người không liên quan và nên được tách ra trong việc sử dụng hàng ngày của họ?

Câu trả lời:


7

Tôi đang thực hiện một số nghiên cứu về chủ đề này và tôi có thể cung cấp cho bạn một số gợi ý, nhưng tôi chưa tìm được cách nào để nó hoạt động.

Khỉ

Monkeysphere có vẻ là một dự án rất thú vị, nhưng tôi đã không thể biên dịch nó trong Mac OS X mà không làm tắc nghẽn không gian đĩa trống nhỏ của tôi với MacPorts.

Sử dụng gpgkey2ssh

Cách đầu tiên tôi khuyên bạn nên thử là tạo một mục ủy quyền tương thích từ id khóa của bạn (ví dụ: BFB2E5E3) với:

gpgkey2ssh BFB2E5E3 | tee -a ~/.ssh/authorized_keys

Ở đây tôi đã thêm nó vào localhost của mình vì tôi đã chạy một máy chủ ssh cho mục đích thử nghiệm, nhưng tất nhiên bạn nên thêm nó vào máy chủ đích ~/.ssh/authorized_keys. Tiếp theo, bạn cần yêu cầu SSH sử dụng phần riêng tư của khóa này trong khi xác thực, nhưng chỉ cần xuất phiên bản bọc thép ASCII của cặp khóa không hoạt động:

gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa
gpg --armor --export BFB2E5E3! | tee ~/.ssh/id_rsa.pub
chmod 400 ~/.ssh/id_rsa
ssh localhost

Sử dụng tác nhân gpg

gpg-agentcó tùy chọn --enable-ssh-supportcho phép nó sử dụng nó như một sự thay thế thả vào cho người nổi tiếng ssh-agent. Tôi đã đọc một số người đang cố gắng thêm thông qua ssh-addkhóa GPG của họ sau khi khởi chạy gpg-agenttheo cách này:

gpg-agent --enable-ssh-support --daemon
gpg --armor --export-secret-key BFB2E5E3! | tee ~/.gnupg/exported-keys/BFB2E5E3_sec.asc
ssh-add ~/.gnupg/exported-keys/BFB2E5E3_sec.asc

Nhưng tôi không nghĩ rằng điều này sẽ làm việc. Trang web của đại lý gpg nói:

Khóa SSH, được sử dụng thông qua tác nhân, cần được thêm vào tác nhân gpg ban đầu thông qua tiện ích ssh-add. Khi một khóa được thêm vào, ssh-add sẽ hỏi mật khẩu của tệp khóa được cung cấp và gửi tài liệu khóa không được bảo vệ cho tác nhân; điều này làm cho tác nhân gpg yêu cầu một cụm mật khẩu, được sử dụng để mã hóa khóa mới nhận và lưu trữ nó trong một thư mục cụ thể của tác nhân gpg.

Vì vậy, có vẻ như gpg-agentnên được sử dụng như một biện pháp bổ sung để bảo vệ các khóa SSH của bạn bằng mã hóa GPG.

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

Jérôme Pouiller trong blog của mình viết rằng tiện ích Gpgsm có thể xuất các khóa và chứng chỉ trong PCSC12; sau đó chúng có thể được OpenSSH sử dụng:

gpgsm -o secret-gpg-key.p12 --export-secret-key-p12 0xXXXXXXXX
openssl pkcs12 -in secret-gpg-key.p12 -nocerts -out gpg-key.pem
chmod 600 gpg-key.pem
cp gpg-key.pem ~/.ssh/id_rsa
ssh-keygen -y -f gpg-key.pem > ~/.ssh/id_rsa.pub

Nhưng tôi chưa tìm được cách nào để gpgsmchấp nhận bàn phím gpg của mình.

Những thứ khác bạn có thể thử

SSH có -Itùy chọn chỉ định thư viện chia sẻ PKCS # 11 sshnên sử dụng để liên lạc với mã thông báo PKCS # 11 cung cấp khóa RSA riêng của người dùng. ssh-keygencó thể sử dụng khóa chung hoặc khóa riêng RFC4716 / SSH2, khóa chung PEM PKCS8 và khóa chung PEM để tạo khóa riêng (hoặc chung) tương thích OpenSSH bằng cách sử dụng -i-mtùy chọn.

Tuy nhiên, tôi không thể tìm ra cách để kết hợp tất cả lại.


1
Để tham khảo trong tương lai, nếu bạn tìm thấy hai câu hỏi về cơ bản giống hệt nhau, bạn có thể gắn cờ chúng là trùng lặp (sử dụng flagliên kết dưới câu hỏi), thay vì đăng cùng một câu trả lời hai lần. Cảm ơn đã trả lời chi tiết!
nhinkle

Xin lỗi tôi không biết về tính năng này. Cảm ơn bạn
Claudio Floreani

2
Tôi không chắc chắn những gì bạn đang cố gắng thực hiện với gpg --armor --export-secret-key BFB2E5E3! |tee ~/.ssh/id_rsa. Bạn đang sử dụng teechỉ để bạn có thể thấy đầu ra? Đầu ra của lệnh này không phù hợp để sử dụng bởi ssh-add; id_rsatệp được tạo không thể được tải vào một trong hai ssh-agenthoặc gpg-agentcũng không thể sử dụng trực tiếp ssh.
larsks


2

Về mặt kỹ thuật có, các khóa PGP có thể được sử dụng để xác thực SSH. Những gì mọi người gọi là "khóa PGP" là một chứng chỉ , chứa RSA, ECDSA thông thường hoặc các khóa khác (khóa chính và khóa con) cùng với siêu dữ liệu của chứng chỉ. Trong thực tế, thậm chí còn có một cờ sử dụng "xác thực" được xác định.

Tuy nhiên, không nên sử dụng cùng một khóa cho nhiều mục đích; tuy nhiên, điều này dễ dàng được giải quyết vì bạn có thể dễ dàng thêm một khóa con chỉ xác thực vào chứng chỉ PGP của mình (thông qua gpg --expert --edit-key). Bạn sẽ có một khóa chính ký / chứng nhận, khóa con mã hóa và khóa con xác thực.

Tuy nhiên, trên thực tế, tôi chưa thể tìm ra cách xác thực bằng cách sử dụng khóa PGP trực tiếp, mặc dù tôi đã quá lười biếng để thử một vài ý tưởng. Bộ Monkeysphere có một công cụ để thêm các khóa con xác thực GPG của bạn vào ssh-agent, thật đơn giản. Nhưng nên có một vài bài viết Super User cũ hơn về điều này.


Cảm ơn vì thông tin. Chúng rất hữu ích nhưng không đủ để trả lời câu hỏi của tôi. Tôi vẫn không biết cách tích hợp chứng chỉ PGP và khóa SSH của mình.
qazwsx

Từ tài liệu Monkeysphere; monkeysphere subkey-to-ssh-agentđể tải chìa khóa của bạn vào đại lý.
dùng1686
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.