diff --git a/pkg/compute/models/guest_sshable.go b/pkg/compute/models/guest_sshable.go index 987ab1ed6d..4ce414fb59 100644 --- a/pkg/compute/models/guest_sshable.go +++ b/pkg/compute/models/guest_sshable.go @@ -210,8 +210,20 @@ func (guest *SGuest) sshableTryEach( if err := res.Unmarshal(&fwd); err != nil { log.Errorf("unmarshal fwd details: %q", res.String()) } - if ok := guest.sshableTryForward(ctx, tryData, &fwd); ok { - return nil + + tmo := time.NewTimer(13 * time.Second) + tick := time.NewTicker(3 * time.Second) + for { + select { + case <-tmo.C: + break + case <-tick.C: + if ok := guest.sshableTryForward(ctx, tryData, &fwd); ok { + return nil + } + case <-ctx.Done(): + break + } } } else { var reason string