go x/crypto/ssh/agent: keyring 不支持 "ConfirmBeforeUse"

sd2nnvve  于 4个月前  发布在  Go
关注(0)|答案(1)|浏览(40)

你使用的Go版本是什么( go version )?

我正在使用最新的 https://github.com/buptczq/WinCryptSSHAgent 版本

这个问题在最新版本的发布中是否重现?

就我的代码分析来看:是的

你使用的操作系统和处理器架构是什么( go env )?

Windows 10, x64

你做了什么?

TL;DR:意识到 ssh-add-c -flag被 https://github.com/buptczq/WinCryptSSHAgent 忽略了,而 -t 没有。
更多详情请参见 buptczq/WinCryptSSHAgent#55
打开那个问题后,我进一步调查并理解了,问题出在库里。特别是ssh代理的密钥环实现:https://github.com/golang/crypto/blob/a769d52b0f97a420f3dcafc17f8b3384217859a2/ssh/agent/keyring.go
虽然https://github.com/golang/crypto/blob/a769d52b0f97a420f3dcafc17f8b3384217859a2/ssh/agent/keyring.go#L147-L148 说 "注意,任何给定的约束都被忽略。",时间约束实际上并不是这样,因为在 golang/crypto@8e06e8d 中添加了适当的处理。然而,提交描述中的声明 "如果设置了 ConfirmBeforeUse,将要求用户确认签名操作" 不是真的:就我理解的代码而言,文件中没有包含任何sch处理。

你期望看到什么?

我期望看到的是,要么两个标志都被忽略/不支持(这在Windows上的Pageant以及Microsoft OpenSSH中很常见),要么两个标志都受支持。当然最好是最新的。

你看到了什么?

如上所述:ssh-add -t 被正确处理,而 ssh-add -c 没有被处理。

kkih6yb8

kkih6yb81#

看起来它在https://golang.org/cl/28956的审查期间被移除了,因为该实现依赖于一个外部程序,但提交信息和文档注解没有更新。

相关问题