sshnet / sshnet/SSH.NET

SshOperationTimeoutException on Connect() without waiting for timeout

Aperta
#944 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
C#
Stelle
4.4k
Fork
993
Merge medio
9g 21h
PR unite (30g)
1

Descrizione

Hi,

My CI/CD suite contains several SSH tests.
Some of the tests are connecting to an SSH server that rejects them and asserting what was the BannerMessage error.

Somehow, when I change a completely irrelevant code (changed my Redis client Nuget package) - these tests fail!
The behaviour for calling Connect() changes all of sudden, throwing exception immediately, without raising the AuthenticationFailed event and populating the BannerMessage error.
I'm setting timeouts properly on the ConnectionInfo -

return new ConnectionInfo(host, port, username) 
{
     Timeout = TimeSpan.FromSeconds(60),
     ChannelCloseTimeout = TimeSpan.FromSeconds(10),
     RetryAttempts = 3
}

this is the stack trace

Renci.SshNet.Common.SshOperationTimeoutException: Session operation has timed out
[xUnit.net 00:06:42.81] at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle, TimeSpan timeout)
[xUnit.net 00:06:42.81] at Renci.SshNet.NoneAuthenticationMethod.Authenticate(Session session)
[xUnit.net 00:06:42.81] at Renci.SshNet.ClientAuthentication.Authenticate(IConnectionInfoInternal connectionInfo, ISession session)
[xUnit.net 00:06:42.81] at Renci.SshNet.ConnectionInfo.Authenticate(ISession session, IServiceFactory serviceFactory)
[xUnit.net 00:06:42.81] at Renci.SshNet.Session.Connect()
[xUnit.net 00:06:42.81] at Renci.SshNet.BaseClient.CreateAndConnectSession()
[xUnit.net 00:06:42.81] at Renci.SshNet.BaseClient.Connect()

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia dalla configurazione del timeout di ConnectionInfo e dal punto di ingresso Connect(), quindi segui lo stack trace attraverso Session.Connect(), ClientAuthentication.Authenticate() e NoneAuthenticationMethod.Authenticate(). Riproduci il caso del server SSH rifiutato e confronta se Connect() attende il timeout configurato, genera AuthenticationFailed e valorizza BannerMessage.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp
Ambito
networking
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
30/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.