diff --git a/yama_wormfile_sftp/src/lib.rs b/yama_wormfile_sftp/src/lib.rs index 550e240..95c1401 100644 --- a/yama_wormfile_sftp/src/lib.rs +++ b/yama_wormfile_sftp/src/lib.rs @@ -2,7 +2,7 @@ extern crate core; use async_trait::async_trait; use eyre::{bail, Context as EyreContext, ContextCompat}; -use openssh::{KnownHosts, RemoteChild, Session, Stdio}; +use openssh::{KnownHosts, RemoteChild, Session, SessionBuilder, Stdio}; use openssh_sftp_client::error::SftpErrorKind; use openssh_sftp_client::file::{File, TokioCompatFile}; use openssh_sftp_client::fs::{DirEntry, Fs}; @@ -55,7 +55,12 @@ struct SftpConn { impl SftpConn { pub async fn create(ssh_connect: &str, root_dir: impl Into) -> eyre::Result { let root_dir = root_dir.into(); - let session = Session::connect(ssh_connect, KnownHosts::Strict).await?; + let mut session_builder = SessionBuilder::default(); + if let Ok(ssh_key_path) = std::env::var("YAMA_SSH_KEY") { + session_builder.keyfile(&ssh_key_path); + } + session_builder.known_hosts_check(KnownHosts::Add); + let session = session_builder.connect(ssh_connect).await?; let res = SftpConnAsyncTryBuilder { ssh: session,