我希望得到指引,因为我不知道如何解密加密的密钥,以便在golang ssh中使用它。我试图将两个其他代码来源(包括这个)组合起来,但无法使其工作。
我认为我已经获得了DER格式的密钥,但需要将其转换为PEM格式,以便与crypto/ssh一起使用。
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,D7C72273BE168626E5B2D1BC72E56326
...
-----END RSA PRIVATE KEY-----
我读到了它:
key, err := ioutil.ReadFile(privateKey)
if err != nil {
log.Fatalf("Unable to read private key: %v", err)
}
有了一个未加密的(!) 密钥,我可以:
signer, err := ssh.ParsePrivateKey(key)
if err != nil {
log.Fatalf("Unable to parse private key: %v", err)
}
config := &ssh.ClientConfig{
User: username,
Auth: []ssh.AuthMethod{
ssh.PublicKeys(signer),
},
}
这将能够起作用。
我重复使用了一些代码,我认为这些代码可以将 PEM 解密为 DER 格式:
func decrypt(key []byte, password []byte) []byte {
block, rest := pem.Decode(key)
if len(rest) > 0 {
log.Fatalf("Extra data included in key")
}
der, err := x509.DecryptPEMBlock(block, password)
if err != nil {
log.Fatalf("Decrypt failed: %v", err)
}
return der
}
那么,我该如何从DER获取签名者呢?
或者说,最佳解决方案是什么?
AuthMethod{PublicKey}
?SSH客户端使用私钥... - undefined