在我正在开发的程序中,我需要一种在开发过程中将公钥添加到 authorized_keys 文件的方法,因此我使用命令行参数来执行此操作。
我省略了大部分代码,但如果您想查看所有代码,这里是存储库,问题行位于 main.go 的第 20 行。
b, err := ioutil.ReadFile(os.Args[1])
if err != nil {
log.Fatalf("Fatal error trying to read new public key file: %s", err)
}
newAuthorizedKey, err := ssh.ParsePublicKey(b)
if err != nil {
log.Fatalf("Fatal error trying to parse new public key: %s", err)
}
Run Code Online (Sandbox Code Playgroud)
“短读”错误来自ssh.ParsePublicKey
函数。我传入的命令行参数是要添加到该程序的authorized_keys 文件中的公钥的位置(例如~/.ssh/id_rsa.pub
)。我已确保文件正确传递到程序中。
我查看了源代码,希望能调试这个“短读”错误,但我不知道发生了什么。ParsePublicKey
函数源代码的位置crypto/ssh
位于此处,parseString
函数源代码的位置,即ParsePublicKey
函数用于生成“短读”错误的源代码位置,位于此处,也在crypto/ssh
.
我认为该问题的一些评论导致了这一点,但该函数ssh.ParseAuthorizedKey([]byte)
能够读取~/.ssh/id_rsa.pub
.
https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey
你的例子应该是这样的:
b, err := ioutil.ReadFile(os.Args[1])
if err != nil {
log.Fatalf("Fatal error trying to read new public key file: %s", err)
}
newAuthorizedKey, _, _, _, err := ssh.ParseAuthorizedKey(b)
if err != nil {
log.Fatalf("Fatal error trying to parse new public key: %s", err)
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1851 次 |
最近记录: |