Câu trả lời:
Tôi biết đây là một bài viết cũ, nhưng đối với những người như tôi vấp phải điều này:
Bây giờ (kể từ gpg 2.1) có thể chỉ cần trích xuất các khóa ssh trực tiếp bằng gpg :
gpg --export-ssh-key <key id>!
.
Các !
dấu ấn là không bắt buộc, nó làm cho các khóa chính có thể xuất khẩu và bỏ qua kiểm tra xem chính là xác thực có khả năng ([CA]).
Chi tiết:
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.
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.
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
gpg-agent
có tùy chọn --enable-ssh-support
cho 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 được một số người đang cố gắng thêm thông qua ssh-add
khóa GPG của họ sau khi khởi chạy gpg-agent
theo 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-agent
nê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.
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 để gpgsm
chấp nhận bàn phím gpg của mình.
SSH có một -I
tùy chọn để chỉ định thư viện chia sẻ PKCS # 11 ssh
nê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-keygen
có 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
và -m
tù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.
gpgkey2ssh
đã được thay thế bởi --export-ssh-key
phiên bản 2.1.11 (2016-01-26). Phải mất một thời gian tôi mới nhận ra điều này. Cách sử dụng là gpg --export-ssh-key BFB2E5E3
.
Không, chúng không thể thay thế cho nhau. Có, có thể sử dụng các khóa GPG để xác thực - gói Monkeysphere có các công cụ để trích xuất khóa RSA thô từ chứng chỉ GPG của bạn.
Chứng chỉ GPG của bạn sẽ cần một khóa con với cờ khả năng "xác thực". Để tạo một khóa con như vậy, hãy chạy một lần:
monkeysphere g
Bây giờ thêm khóa con xác thực của bạn vào ssh-agent :
monkeysphere s
Hơi liên quan: chủ đề người dùng gnupg này .
Với thông tin từ các câu trả lời cho câu hỏi này và sự giúp đỡ của danh sách gửi thư của người dùng gnupg, tôi có thể tìm ra cách sử dụng khóa GPG của mình để xác thực SSH. Như đã được đề cập bởi Claudio Floreani trong câu trả lời của mình, có một vài phương pháp khả thi để làm điều này.
Tôi đã viết một bài đăng trên blog về một số giải pháp có thể: http://budts.be/weblog/2012/08/ssh-authentication-with-your-pgp-key
Để tóm tắt: Hoặc bạn sử dụng GnuPG 2.1, hiện đang trong giai đoạn thử nghiệm. Khi sử dụng phiên bản này, bạn chỉ cần khởi động gpg-agent với tùy chọn --enable-ssh-support và thêm keygrip cho khóa GPG (hoặc khóa con) của bạn vào ~ / .gnupg / sshcontrol.
Khi bạn đang sử dụng phiên bản GnuPG ổn định hiện tại (2.0.x), bạn có thể sử dụng monkeysphere để thêm khóa của mình vào gpg-agent (một lần nữa, sau khi bắt đầu gpg-agent với tùy chọn --enable-ssh-support).
Cũng có thể sử dụng khóa Gnome (hoặc thậm chí là tác nhân ssh thông thường) với sự trợ giúp của khỉ. Vấn đề duy nhất trong trường hợp này là bạn sẽ phải thêm lại khóa của mình khi đăng nhập lại (vào Gnome hoặc XFCE). Để giải quyết điều này, bạn có thể tự xuất khóa của mình và chuyển đổi nó.