Tor*_*xed 5 ssh gpg certificates gpg-agent
是否可以设置 SSH(例如通过 pam)来根据 CA 服务器检查连接客户端的公钥?我已经尝试过 gnupg(通过gpg-agent --daemon --enable-ssh-support
),也尝试过与 OpenCA 一起工作,这证明只是安装是一个挑战。此外,当涉及到这两者时,文档是可怕的。
我想完成的是以下方面的事情:
[客户端]--SSH-->“服务器”<---> [CA 服务器]
整个平台都是基于 *nix 的,我现在对建议持开放态度,因为我已经坚持了一段时间了。
我已经按照这些指南尽可能简单地进行了设置:
我最初的想法是建立我自己的“密钥服务器”,它gpg
可以发送和检查密钥,但没有任何关于这方面的信息(或者至少我找不到)。
根据我的理解,我应该能够ssh-add -l
列出我的所有密钥,但这给了我:The agent has no identities.
这并不奇怪,因为我从未指定从何处获取它们,但“它应该可以正常工作”(...?) .
该gpg.conf的样子:
... lots of default ...
personal-digest-preferences SHA512
cert-digest-algo SHA512
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
homedir /etc/gnupg
use-agent
Run Code Online (Sandbox Code Playgroud)
和我的gpg-agent.conf:
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 10800
default-cache-ttl-ssh 10800
write-env-file /etc/gnupg/.gpg-agent-info
enable-ssh-support
Run Code Online (Sandbox Code Playgroud)
只是为了验证我确实有一个密钥并且 gpg 正在响应:
~]# gpg --list-keys
/etc/gnupg/pubring.gpg
----------------------
pub 4096R/#######2 2013-12-10 [expired: 2014-12-10]
uid Anton (...) <mail>
sub 4096R/#######5 2013-12-10 [expires: 2014-12-10]
Run Code Online (Sandbox Code Playgroud)
当最终一切就绪并开始时,我访问了一个网站,上面说我的“对称密钥长度太短”,我无法通过。
我知道这是一个非常古老的问题。但是,您的问题有两个答案。
您已经完成了第一步,在 gpg-agent.conf 中启用 ssh-support
但是,您尚未提供任何可供使用的 PGP 密钥。为了通过 ssh 使用 PGP 密钥,您必须以 ssh 格式导出公钥并将其添加到远程主机的 ~/.ssh/authorized_keys 文件中。然后将私钥的keygrip添加到文件~/.gnupg/sshcontrol中。
要将 PGP 公钥导出为 ssh:
$gpg -a --export-ssh-key [keyid]
Run Code Online (Sandbox Code Playgroud)
要查看 PGP keygrip: $gpg --with-keygrip --list-secret-keys [keyid]
我通常创建一个合适的子密钥以与 SSH 一起使用。如果您使用的是 GPG 2.2.1,那么您甚至可以使用 ED25519。
$gpg --expert --edit-key [keyid]
gpg> addkey
Option 11 for ECC
Option A to add authentication
Option 1 for Curve 25519
Expire never
Create yes
gpg> save
Run Code Online (Sandbox Code Playgroud)
然后仅导出身份验证子密钥:
$gpg -a --export-ssh-key [auth subkeyid]!
Run Code Online (Sandbox Code Playgroud)
感叹号仅选择指定的子项。
您还需要确保在 ~/.bashrc 中设置环境变量...如果您运行的是 Xwindow 客户端,这通常是通过 /etc//X11/Xsession.d/90gpg-agent 为您完成的以下 bash 脚本:
agent_sock=$(gpgconf --list-dirs agent-socket)
export GPG_AGENT_INFO=${agent_sock}:0:1
if [ -n "$(gpgconf --list-options gpg-agent | \
awk -F: '/^enable-ssh-support:/{ print $10 }')" ]; then
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
fi
Run Code Online (Sandbox Code Playgroud)
确保设置了环境变量后,当您列出可用身份时,添加到 ~/.gnupg/sshcontrol 文件中的任何 keygrips 都将在 ssh-agent 中显示为身份验证密钥:
$ssh-add -l
Run Code Online (Sandbox Code Playgroud)
请注意,您可以通过 -E 选项更改显示的哈希值以显示 MD5 或 SHA256。
这是一个相当复杂的问题。红帽在这里有详细的演练:
目前尚不清楚是否可以使用 PGP 密钥作为 SSH CA 密钥。我自己还没有尝试过。不过,我确实在客户端使用 PGP 密钥。我发现它使生活变得非常轻松,并且管理 SSH 身份比使用 ssh-genkey 生成的密钥更简单。
归档时间: |
|
查看次数: |
675 次 |
最近记录: |