crypto/ssh ParsePublicKey "short read" 错误
crypto/ssh ParsePublicKey "short read" error
在我正在开发的程序中,我需要一种在开发过程中将 public 键添加到 authorized_keys 文件中的方法,因此我使用命令行参数来这样做。
我省略了大部分代码,但如果您想查看所有代码,here is the repository,问题行位于第 20 行的 main.go 中。
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)
}
"short read" 错误来自 ssh.ParsePublicKey
函数。我传入的命令行参数是要添加到该程序的 authorized_keys 文件中的 public 键的位置(例如 ~/.ssh/id_rsa.pub
)。我已确保文件已正确传递到程序中。
我查看了源代码,希望能调试这个 "short read" 错误,但我无法弄清楚发生了什么。 crypto/ssh
中ParsePublicKey
函数的源代码位置位于here, and the location of source code of the parseString
function, which is what the ParsePublicKey
function is using to generate the "short read" error, is located here,也在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)
}
在我正在开发的程序中,我需要一种在开发过程中将 public 键添加到 authorized_keys 文件中的方法,因此我使用命令行参数来这样做。
我省略了大部分代码,但如果您想查看所有代码,here is the repository,问题行位于第 20 行的 main.go 中。
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)
}
"short read" 错误来自 ssh.ParsePublicKey
函数。我传入的命令行参数是要添加到该程序的 authorized_keys 文件中的 public 键的位置(例如 ~/.ssh/id_rsa.pub
)。我已确保文件已正确传递到程序中。
我查看了源代码,希望能调试这个 "short read" 错误,但我无法弄清楚发生了什么。 crypto/ssh
中ParsePublicKey
函数的源代码位置位于here, and the location of source code of the parseString
function, which is what the ParsePublicKey
function is using to generate the "short read" error, is located here,也在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)
}