diff --git a/qemu/qemu-kernel.go b/qemu/qemu-kernel.go index 7462798..c0d0ad9 100644 --- a/qemu/qemu-kernel.go +++ b/qemu/qemu-kernel.go @@ -15,6 +15,7 @@ import ( "os/exec" "runtime" "strings" + "sync" "syscall" "time" @@ -364,7 +365,12 @@ func (q System) WaitForSSH(timeout time.Duration) error { return errors.New("no ssh (timeout)") } +var sshMu sync.Mutex + func (q System) ssh(user string) (client *ssh.Client, err error) { + sshMu.Lock() + defer sshMu.Unlock() + cfg := &ssh.ClientConfig{ User: user, HostKeyCallback: ssh.InsecureIgnoreHostKey(), @@ -464,7 +470,9 @@ func (q System) scp(user, localPath, remotePath string, recursive bool) (err err HostKeyCallback: ssh.InsecureIgnoreHostKey(), } + sshMu.Lock() client, err := scp.NewClient(q.sshAddrPort, cfg, &scp.ClientOption{}) + sshMu.Unlock() if err != nil { return }