開発中のプログラムでは、開発中にauthorized_keysファイルに公開鍵を追加する方法が必要なので、コマンドライン引数を使用しています。crypto/ssh ParsePublicKey "short read"エラー
あなたはすべてのコードを表示したい場合、私は「短い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)
}
ライン上main.goに位置している問題のあるラインで、here is the repository、コードの大部分を省略しますが、しています読み取り "エラーはssh.ParsePublicKey
関数から発生します。渡しているコマンドライン引数は、このプログラムのauthorized_keysファイルに追加する公開鍵の場所です(例:~/.ssh/id_rsa.pub
)。私は、ファイルがプログラムに正しく渡されていることを確認しました。
この「短読」エラーをデバッグするためにソースコードを調べましたが、何が起こっているのかわかりません。 ParsePublicKey
のソースコードの場所はhereであり、ParsePublicKey
関数が "短読"エラーを生成するために使用しているparseString
関数のソースコードの場所は、crypto/ssh
のhereにあります。 。
[ 'ParsePublicKey']のドキュメント(https://godoc.org/golang.org/x/crypto/ssh#ParsePublicKey )はopensshが使用しているディスク上のフォーマットではなく、ワイヤ形式で公開鍵を解析すると言います。 – JimB
複数のフォーマットがあることに気付かず、ワイヤフォーマットに変換する方法はありますか? @JimB –
あなたは何も解析する必要はありません、id_rsa.pub _is_ authorized_keys形式です。ほとんどの人は、authorized_keysファイルに直接追加するだけで、cliに追加します。 – JimB