diff --git a/docs/changelog.rst b/docs/changelog.rst index 49e702b65..a036962f6 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -76,6 +76,8 @@ Detailed list of changes - Config file format: allow splitting lines by starting subsequent lines with a backslash (:pull:`6603`) +- ssh kitten: Fix a regression causing hostname directives in :file:`ssh.conf` not matching when username is specified (:disc:`6609`) + 0.29.2 [2023-07-27] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kittens/ssh/main.go b/kittens/ssh/main.go index e9f0d098f..c4dc2966e 100644 --- a/kittens/ssh/main.go +++ b/kittens/ssh/main.go @@ -49,19 +49,23 @@ func get_destination(hostname string) (username, hostname_for_match string) { username = u.Username } hostname_for_match = hostname + parsed := false if strings.HasPrefix(hostname, "ssh://") { p, err := url.Parse(hostname) if err == nil { hostname_for_match = p.Hostname() + parsed = true if p.User.Username() != "" { username = p.User.Username() } } } else if strings.Contains(hostname, "@") && hostname[0] != '@' { username, hostname_for_match, _ = strings.Cut(hostname, "@") + parsed = true } - if strings.Contains(hostname, "@") && hostname[0] != '@' { - _, hostname_for_match, _ = strings.Cut(hostname_for_match, "@") + if !parsed && strings.Contains(hostname, "@") && hostname[0] != '@' { + _, hostname_for_match, _ = strings.Cut(hostname, "@") + parsed = true } hostname_for_match, _, _ = strings.Cut(hostname_for_match, ":") return