fix(windows-build): ssh-agent err when building on windows

This commit is contained in:
Doracoin 2026-06-11 17:29:40 +08:00 committed by GitHub
parent 759cab9088
commit c7c71850d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 12 additions and 0 deletions

1
Cargo.lock generated
View File

@ -1906,6 +1906,7 @@ dependencies = [
"log",
"mongodb",
"mysql_async",
"pageant",
"percent-encoding",
"portpicker",
"rayon",

View File

@ -39,6 +39,7 @@ futures = "0.3"
iana-time-zone = "0.1"
mongodb = "3.2.5"
russh = "0.60"
pageant = "0.2"
portpicker = "0.1.1"
csv = "1"
calamine = "0.30.1"

View File

@ -112,6 +112,7 @@ async fn try_authenticate_with_agent(
ssh_user: &str,
connect_timeout: &Duration,
) -> Result<(), String> {
#[cfg(unix)]
let mut agent = match AgentClient::connect_env().await {
Ok(a) => a,
Err(e) => {
@ -119,6 +120,14 @@ async fn try_authenticate_with_agent(
}
};
#[cfg(windows)]
let mut agent = {
let stream = pageant::PageantStream::new()
.await
.map_err(|e| format!("No SSH password or key provided, and ssh-agent (Pageant) is unavailable: {e}"))?;
AgentClient::connect(stream)
};
let identities = match agent.request_identities().await {
Ok(ids) if ids.is_empty() => {
return Err("No SSH password or key provided, and ssh-agent has no identities".to_string());

View File

@ -433,6 +433,7 @@ fn spawn_plugin_child(plugin: &InstalledPlugin, env: &PluginRuntimeEnv) -> Resul
#[cfg(windows)]
{
#[allow(unused_imports)]
use std::os::windows::process::CommandExt;
command.creation_flags(CREATE_NO_WINDOW);
}