问题
I am trying to use the following Rust code to connect to EC2 instances.
#[test]
fn client_ssh_timeout2() {
match Command::new("/usr/bin/ssh -i /tmp/.ssh/25.pem ubuntu@ip").spawn() {
Ok(_) => println!("Able to ssh"),
Err(e) => println!("{:?}", e),
};
}
But I am getting the following error
Error { repr: Os { code: 2, message: "No such file or directory" } }
Has anyone been able to use std::process::Command
or any other Rust library to connect to EC2 instances using PEM files? I tried using ssh2-rs(libssh2) but couldn't connect to EC2 instances.
回答1:
This appears to be a misunderstanding of how to use std::process:Command
. Command::new takes just the program:
fn new<S: AsRef<OsStr>>(program: S) -> Command
Command::arg or Command::args are used to provide the arguments.
You will want something like
Command::new("/usr/bin/ssh")
.args(&["-i", "/tmp/.ssh/25.pem", "ubuntu@ip")
.spawn()
来源:https://stackoverflow.com/questions/40836973/unable-to-use-stdprocesscommand-no-such-file-or-directory