是否可以设置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
和我的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
只是为了验证我是否确实有一个密钥,并且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]
终于一切就绪并开始运行后,我进入一个网站,说我的“对称密钥长度太短”,我无法超越。
我知道这是一个非常老的问题。但是,您的问题有两个答案。
您已完成第一步,在gpg-agent.conf中启用了ssh-support
但是,您尚未提供任何要使用的PGP密钥。为了在ssh中使用PGP密钥,您必须以ssh格式导出公共密钥,并将其添加到远程主机的〜/ .ssh / authorized_keys文件中。然后将私钥的密钥夹添加到文件〜/ .gnupg / sshcontrol。
要将PGP公钥导出为ssh:
$gpg -a --export-ssh-key [keyid]
要查看PGP密钥,请执行以下操作:$ 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
然后仅导出身份验证子项:
$gpg -a --export-ssh-key [auth subkeyid]!
感叹号仅选择指示的子项。
您还需要确保在〜/ .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
确保设置了环境变量后,当列出可用的标识时,添加到〜/ .gnupg / sshcontrol文件中的所有键把手都将在ssh-agent中显示为身份验证密钥:
$ssh-add -l
注意,您可以通过-E选项更改显示的哈希值,以显示MD5或SHA256。
这是一个相当复杂的问题。红帽在这里有详细的演练:
尚不清楚是否可以将PGP密钥用作SSH CA密钥。我自己还没有尝试过。但是,我确实在客户端使用PGP密钥。我发现与使用ssh-genkey生成的密钥相比,它使生活变得非常轻松,并且管理SSH身份的麻烦也减轻了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句