<PackageReference Include="SSH.NET" Version="2016.0.0" />

NoneAuthenticationMethod

Provides functionality for "none" authentication method
using Renci.SshNet.Messages; using Renci.SshNet.Messages.Authentication; using System; using System.Threading; namespace Renci.SshNet { public class NoneAuthenticationMethod : AuthenticationMethod, IDisposable { private AuthenticationResult _authenticationResult = AuthenticationResult.Failure; private EventWaitHandle _authenticationCompleted = new AutoResetEvent(false); private bool _isDisposed; public override string Name => "none"; public NoneAuthenticationMethod(string username) : base(username) { } public override AuthenticationResult Authenticate(Session session) { if (session == null) throw new ArgumentNullException("session"); session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived; session.UserAuthenticationFailureReceived += Session_UserAuthenticationFailureReceived; try { session.SendMessage(new RequestMessageNone(ServiceName.Connection, base.Username)); session.WaitOnHandle(_authenticationCompleted); } finally { session.UserAuthenticationSuccessReceived -= Session_UserAuthenticationSuccessReceived; session.UserAuthenticationFailureReceived -= Session_UserAuthenticationFailureReceived; } return _authenticationResult; } private void Session_UserAuthenticationSuccessReceived(object sender, MessageEventArgs<SuccessMessage> e) { _authenticationResult = AuthenticationResult.Success; _authenticationCompleted.Set(); } private void Session_UserAuthenticationFailureReceived(object sender, MessageEventArgs<FailureMessage> e) { if (e.Message.PartialSuccess) _authenticationResult = AuthenticationResult.PartialSuccess; else _authenticationResult = AuthenticationResult.Failure; base.AllowedAuthentications = e.Message.AllowedAuthentications; _authenticationCompleted.Set(); } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (!_isDisposed && disposing) { EventWaitHandle authenticationCompleted = _authenticationCompleted; if (authenticationCompleted != null) { authenticationCompleted.Dispose(); _authenticationCompleted = null; } _isDisposed = true; } } ~NoneAuthenticationMethod() { Dispose(false); } } }