44 "errors"
55 "fmt"
66 "io"
7- "os"
87 "time"
98
109 "golang.org/x/crypto/ssh"
@@ -18,14 +17,9 @@ type SSHManager struct {
1817 stdin io.WriteCloser
1918}
2019
21- func loadPrivateKey (keyPath , passphrase string ) (ssh.AuthMethod , error ) {
22- keyData , err := os .ReadFile (keyPath )
23- if err != nil {
24- return nil , fmt .Errorf ("read private key file failed: %w" , err )
25- }
26-
20+ func loadPrivateKey (keyData []byte , passphrase string ) (ssh.AuthMethod , error ) {
2721 var signer ssh.Signer
28-
22+ var err error
2923 if passphrase == "" {
3024 signer , err = ssh .ParsePrivateKey (keyData )
3125 if err != nil {
@@ -42,8 +36,8 @@ func loadPrivateKey(keyPath, passphrase string) (ssh.AuthMethod, error) {
4236 return ssh .PublicKeys (signer ), nil
4337}
4438
45- func NewSSHManager (host , port , user , keyPath string , timeout time.Duration ) (* SSHManager , error ) {
46- authMethod , err := loadPrivateKey (keyPath , "" )
39+ func NewSSHManager (host , port , user string , keyData [] byte , timeout time.Duration ) (* SSHManager , error ) {
40+ authMethod , err := loadPrivateKey (keyData , "" )
4741 if err != nil {
4842 return nil , fmt .Errorf ("load private key error: %w" , err )
4943 }
0 commit comments