我正在尝试使用受限选项签署一些 SSH 密钥。
我最初的尝试如下:
ssh-keygen -s /path/to/ca-ssh.pem -D opensc-pkcs11.so -n barfoo -O no-agent-forwarding -O no-port-forwarding -O no-x11-forwarding -O no-user-rc -O no-pty -I foo -z 12345 /path/to/pub
然而,这会产生没有选项的结果:
$ ssh-keygen -L -f
Type: [email protected] user certificate
Public key: ED25519-CERT SHA256:secretsquirrel
Signing CA: RSA SHA256: secretsquirrel
Key ID: "foo"
Serial: 12345
Valid: forever
Principals:
barfoo
Critical Options: (none)
Extensions: (none)
一开始我以为应该-O clear
在其他选项之前添加。但结果是一样的(none)
。
因此我想我会尝试-O critical:no-agent-forwarding
样式语法,但这会产生:
Critical Options:
no-agent-forwarding UNKNOWN OPTION (len 0)
最后我尝试了-O critical:no-agent-forwarding=true
,但结果UNKNOWN OPTION
与上面的相同。
这没什么关系,但我使用的版本是:
- Debian 10(破坏者)
- OpenSSH_7.9p1 Debian-10+deb10u2,OpenSSL 1.1.1d 2019 年 9 月 10 日
答案1
您实际上已经实现了想要做的事情:禁用所有权限,这意味着您的“扩展”列表为空。看看如果您-O
根本不使用会发生什么,即ssh-keygen -s /path/to/ca-ssh.pem -D opensc-pkcs11.so -n barfoo -I foo -z 12345 /path/to/pub
- 那么启用了哪些扩展?
-您使用的所有选项都是“no-xxxx”,这意味着您禁用扩展,从而清空扩展列表。 - 无需逐个禁用/删除它们,您只需使用-O clear
。从手册页:
clear ---- 清除所有启用的权限。这对于清除默认权限集很有用,因此可以单独添加权限。