dongsaohu6429 2017-12-29 00:45
浏览 122
已采纳

crypto / ssh ParsePublicKey“短读”错误

In a program I am developing I need a way to add public keys into the authorized_keys file during development, so I am using command line arguments to do so.

I have omitted most of the code, but if you would like to view all of the code, here is the repository, with the problem line being located in main.go on line 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)
}

The "short read" error comes from the ssh.ParsePublicKey function. The command line argument that I am passing in is the location of a public key to add to the authorized_keys file of this program (e.g. ~/.ssh/id_rsa.pub). I have ensured that the file is correctly being passed into the program.

I have looked at the source code in hopes of debugging this "short read" error, but I can't figure out what is going on. The location for source code of the ParsePublicKey function in crypto/ssh is located 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, also in crypto/ssh.

  • 写回答

1条回答 默认 最新

  • douzhang1955 2018-01-03 14:34
    关注

    I think some of the comments to the question lead at this, but the function ssh.ParseAuthorizedKey([]byte) is able to read interpret the file at ~/.ssh/id_rsa.pub.

    https://godoc.org/golang.org/x/crypto/ssh#ParseAuthorizedKey

    Your example should work like this:

    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)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 R语言 拟时序分析降维图如何减少分支
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏