package infra import "fmt" // SSHConn parametros de conexion SSH reutilizables. type SSHConn struct { Host string // Hostname o IP del servidor remoto Port int // Puerto SSH (0 usa el default 22) User string // Usuario remoto KeyPath string // Ruta a clave privada (vacio usa ssh-agent o default) } // sshArgs construye los argumentos comunes de ssh/scp a partir de SSHConn. func (c SSHConn) sshArgs() []string { var args []string port := c.Port if port == 0 { port = 22 } args = append(args, "-o", "StrictHostKeyChecking=accept-new") args = append(args, "-p", fmt.Sprintf("%d", port)) if c.KeyPath != "" { args = append(args, "-i", c.KeyPath) } return args } // scpArgs construye los argumentos comunes de scp a partir de SSHConn. func (c SSHConn) scpArgs() []string { var args []string port := c.Port if port == 0 { port = 22 } args = append(args, "-o", "StrictHostKeyChecking=accept-new") args = append(args, "-P", fmt.Sprintf("%d", port)) if c.KeyPath != "" { args = append(args, "-i", c.KeyPath) } return args } // destination retorna user@host. func (c SSHConn) destination() string { if c.User != "" { return c.User + "@" + c.Host } return c.Host }