SFTP wormfile: pull SSH key from YAMA_SSH_KEY if set

This commit is contained in:
Olivier 'reivilibre' 2023-08-10 20:02:24 +01:00
parent 1ac9bb6d8d
commit 00fa9d0951

View File

@ -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<PathBuf>) -> eyre::Result<Self> {
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,