ssh: Use openbsd nc on macOS (#20751)

Co-authored-by: Conrad Irwin <conrad@zed.dev>
This commit is contained in:
Peter Tripp 2024-11-15 22:27:45 +00:00 committed by GitHub
parent 4c8c6c08fe
commit 6e296eb4b6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 15 additions and 1 deletions

1
Cargo.lock generated
View file

@ -9986,6 +9986,7 @@ dependencies = [
"tempfile",
"thiserror",
"util",
"which 6.0.3",
]
[[package]]

View file

@ -38,6 +38,7 @@ tempfile.workspace = true
thiserror.workspace = true
util.workspace = true
release_channel.workspace = true
which.workspace = true
[dev-dependencies]
gpui = { workspace = true, features = ["test-support"] }

View file

@ -1428,9 +1428,21 @@ impl SshRemoteConnection {
}
});
anyhow::ensure!(
which::which("nc").is_ok(),
"Cannot find nc, which is required to connect over ssh."
);
// Create an askpass script that communicates back to this process.
let askpass_script = format!(
"{shebang}\n{print_args} | nc -U {askpass_socket} 2> /dev/null \n",
"{shebang}\n{print_args} | {nc} -U {askpass_socket} 2> /dev/null \n",
// on macOS `brew install netcat` provides the GNU netcat implementation
// which does not support -U.
nc = if cfg!(target_os = "macos") {
"/usr/bin/nc"
} else {
"nc"
},
askpass_socket = askpass_socket.display(),
print_args = "printf '%s\\0' \"$@\"",
shebang = "#!/bin/sh",