Skip to main content

Error

Enum Error 

Source
pub enum Error {
    Io(Error),
    Ssh(String),
    Russh(Error),
    Key(String),
    KeyLoad(Error),
    AuthenticationFailed,
    MaxSessionsReached {
        max: usize,
        current: usize,
    },
    Configuration(String),
    Session(String),
    AddrParse(AddrParseError),
}
Expand description

Errors that can occur in the wish SSH server library.

This enum represents all possible error conditions when running an SSH server with wish.

§Error Handling

SSH server errors range from configuration issues to runtime authentication failures. Use the ? operator for propagation:

use wish::Result;

async fn run_server() -> Result<()> {
    let server = Server::new(handler).await?;
    server.listen("0.0.0.0:2222").await?;
    Ok(())
}

§Recovery Strategies

Error VariantRecovery Strategy
IoCheck permissions, port availability
SshLog and continue for recoverable errors
RusshCheck SSH protocol compatibility
KeyRegenerate keys or check permissions
KeyLoadVerify key file format
AuthenticationFailedExpected for invalid credentials
MaxSessionsReachedRetry later or raise configured session limit
ConfigurationFix server configuration
SessionClose session gracefully
AddrParseValidate address format

Variants§

§

Io(Error)

I/O error during server operations.

Commonly occurs when:

  • The bind address is already in use
  • Permission denied on privileged ports
  • Network interface is unavailable
§

Ssh(String)

SSH protocol error.

General SSH protocol-level errors. Contains a descriptive message.

§

Russh(Error)

Underlying russh library error.

Wraps errors from the russh SSH implementation.

§

Key(String)

Key generation or management error.

Occurs when generating or manipulating SSH keys fails.

§

KeyLoad(Error)

Key loading error from russh-keys.

Occurs when loading SSH keys from files fails. Common causes: file not found, invalid format, permission denied.

§

AuthenticationFailed

Authentication failed.

Occurs when a client’s credentials are rejected. This is expected in normal operation - not all attempts succeed.

§

MaxSessionsReached

Maximum concurrent sessions reached.

Returned when attempting to create a new session while at capacity.

Fields

§max: usize

Configured maximum concurrent sessions.

§current: usize

Current active session count at rejection time.

§

Configuration(String)

Server configuration error.

Occurs when the server configuration is invalid.

§

Session(String)

Session error.

Occurs during an active SSH session.

§

AddrParse(AddrParseError)

Address parse error.

Occurs when parsing a socket address fails.

Trait Implementations§

Source§

impl Debug for Error

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Error

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for Error

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<AddrParseError> for Error

Source§

fn from(source: AddrParseError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for Error

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for Error

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for Error

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl Freeze for Error

§

impl !RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl !UnwindSafe for Error

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more