2017-11-24 9 views
0
私は何をやっていることは

はgolangから「パスフレーズが短すぎる」

exec.Command("ssh-keygen", "-f", "id_rsa", "-t", "rsa", "-P", "\"\"")

を使用して、golangプログラムからのSSHキーを作成することですが、出力は

exit status 1: Saving key "id_rsa" failed: passphrase is too short (minimum five characters)

を失敗し

端末でコマンドを実行すると、完璧に動作します。

Generating public/private rsa key pair. 
Your identification has been saved in id_rsa. 
Your public key has been saved in id_rsa.pub. 
The key fingerprint is: 
SHA256:HYixKOtEB42jAr+XNa9uQMZnvmLHa6Sirq+ietWaxzI [email protected] 
The key's randomart image is: 
+---[RSA 2048]----+ 
| .o .   | 
|. o... + .  | 
|.oooo o . .  | 
|o..++ = . .  | 
|. o+ B oS .  | 
| o. = + .  | 
| .o O o   | 
|. o E X   | 
|%*.o Xo.   | 
+----[SHA256]-----+ 

完全なコードは次のとおりです。

package main 

import (
    "bytes" 
    "fmt" 
    "os/exec" 
) 

func main() { 
    cmd := exec.Command("ssh-keygen", "-f", "id_rsa", "-t", "rsa", "-P", "\"\"") 
    var out bytes.Buffer 
    var stderr bytes.Buffer 
    cmd.Stdout = &out 
    cmd.Stderr = &stderr 
    err := cmd.Run() 
    if err != nil { 
     fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) 
     return 
    } 
    fmt.Println("Result: " + out.String()) 
} 

答えて

2

あなたは単に使用し、空-P属性を指定する必要はありません。

exec.Command("ssh-keygen", "-f", "id_rsa", "-t", "rsa") 

場合は必要に何らかの理由空白を指定する-P

exec.Command("ssh-keygen", "-f", "id_rsa", "-t", "rsa", "-P", "") 

Als o id_rsaファイルを作成する前に、作成しているディレクトリに存在しないことを確認してください。それ以外の場合は、終了エラー1が発生します。

+0

ありがとう@VaneTrajkov。それは完璧に動作します:) –

関連する問題