Gitfed
bastien-mrq/sssh / internal / connect / connect.go
// Package connect lance la connexion en remplaçant le processus par ssh.
package connect

import (
	"fmt"
	"os"
	"os/exec"
	"syscall"

	"git.neuromancer.ovh/bastien-mrq/sssh/internal/host"
)

// Exec remplace le processus courant par ssh (TTY natif, agent, etc.).
// Ne revient jamais en cas de succès.
func Exec(h host.Host, extra []string) error {
	path, err := exec.LookPath("ssh")
	if err != nil {
		return fmt.Errorf("binaire ssh introuvable : %w", err)
	}
	argv := append([]string{"ssh"}, h.SSHArgs(extra...)...)
	fmt.Fprintf(os.Stderr, "→ %s\n", h.Describe())
	return syscall.Exec(path, argv, os.Environ())
}