2017-11-24 6 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]-----+ 

전체 코드는 다음과 같습니다

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

어떤 이유로 당신이해야하는 경우 :

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 속성을 지정할 필요가 없습니다 비어있는 지정 -P

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

알스 o id_rsa 파일을 만들기 전에 디렉토리를 만들지 마십시오. 그렇지 않으면 exit 오류 1이 발생합니다.

+0

감사합니다. @VaneTrajkov. 완벽하게 작동합니다 :) –