Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Unable to connect to a server using 2024.2.0: Key exchange negotiation failed

Abierto
#1,617 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
csharp, fsharp

Línea de trabajo

Comience con los puntos de entrada KeyExchangeECCurve25519 y Session mostrados en la excepción, comparando el comportamiento entre SSH.NET 2024.1.0 y 2024.2.0. Reproduzca el fallo usando /home/vmadmin/temp/print-sftp-files.fsx con la clave ed25519 codificada en base64; se considerará terminado cuando el ejemplo se conecte y muestre el directorio solicitado como lo hacía con 2024.1.0.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Unable to connect to a server when using SSH.NET 2024.2.0 and base64-encoded ed25519 private key. Version 2024.1.0 works fine.

This is the exception I'm getting:

Renci.SshNet.Common.SshConnectionException: Key exchange negotiation failed.
   at Renci.SshNet.Security.KeyExchange.Finish()
   at Renci.SshNet.Security.KeyExchangeECCurve25519.Finish()
   at Renci.SshNet.Security.KeyExchangeECCurve25519.Session_KeyExchangeEcdhReplyMessageReceived(Object sender, MessageEventArgs`1 e)
   at Renci.SshNet.Session.OnKeyExchangeEcdhReplyMessageReceived(KeyExchangeEcdhReplyMessage message)
   at Renci.SshNet.Messages.Transport.KeyExchangeEcdhReplyMessage.Process(Session session)
   at Renci.SshNet.Session.MessageListener()
--- End of stack trace from previous location ---
   at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle, TimeSpan timeout)
   at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle)
   at Renci.SshNet.Session.Connect()
   at Renci.SshNet.BaseClient.CreateAndConnectSession()
   at Renci.SshNet.BaseClient.Connect()
   at FSI_0002.main(String host, String user, String dir) in /home/vmadmin/temp/print-sftp-files.fsx:line 22
   at <StartupCode$FSI_0002>.$FSI_0002.main@() in /home/vmadmin/temp/print-sftp-files.fsx:line 30
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
Stopped due to error

Here's my code:

#r "nuget: SSH.NET, 2024.2.0"

open Renci.SshNet
open System
open System.IO

let getAuthMethod (user : string) : AuthenticationMethod =
    let key = Environment.GetEnvironmentVariable "SSH_KEY"
    let pwd = Environment.GetEnvironmentVariable "SSH_PWD"

    if not (String.IsNullOrEmpty key) then
        new PrivateKeyAuthenticationMethod(user, new PrivateKeyFile(new MemoryStream(Convert.FromBase64String key)))
    else if not (String.IsNullOrEmpty pwd) then
        new PasswordAuthenticationMethod(user, pwd)
    else
        failwith "Environment variable SSH_PWD or SSH_KEY must be defined"

let main host user (dir: string) =
    let auth = getAuthMethod user
    use client = new SftpClient(new ConnectionInfo(host, user, auth))

    client.Connect()

    let res = client.ListDirectory dir

    for item in res do
        printfn "%s" item.FullName

match fsi.CommandLineArgs |> List.ofArray with
| [ _; host; user; dir ] -> main host user dir
| _ -> printfn "Usage: dotnet fsi %s <host> <user> <dir>" fsi.CommandLineArgs.[0]
Lenguaje dominante
C#
Estrellas
4.4k
Forks
993
Merge medio
9 d 21 h
PR fusionados (30 d)
1

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de sshnet/SSH.NET

Todos los issues de sshnet/SSH.NET

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.