Crate ssh_agent_lib
source · [−]Expand description
ssh-agent-lib
A collection of types for writing custom SSH agents.
This makes it possible to utilize remote keys not supported by the default OpenSSH agent.
Example
This example starts listening on a Unix socket connect.sock
and
processes requests.
use ssh_agent_lib::agent::Agent;
use ssh_agent_lib::proto::message::{Message, SignRequest};
struct MyAgent;
impl Agent for MyAgent {
type Error = ();
fn handle(&self, message: Message) -> Result<Message, ()> {
match message {
Message::SignRequest(request) => {
// get the signature by signing `request.data`
let signature = vec![];
Ok(Message::SignResponse(signature))
},
_ => Ok(Message::Failure),
}
}
}
fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
let agent = MyAgent;
let socket = "connect.sock";
let _ = std::fs::remove_file(socket);
agent.run_unix(socket)?;
Ok(())
}
For more elaborate example see examples
directory.
Note
This library has been forked from sekey/ssh-agent.rs as the upstream seems not be maintained (at least as of 2022).
Re-exports
pub use self::agent::Agent;