dartssh2 icon indicating copy to clipboard operation
dartssh2 copied to clipboard

SSHAuthAbortError(Connection closed before authentication) when using jumpServer

Open mostcute opened this issue 2 years ago • 4 comments

import 'dart:convert';

import 'package:dartssh2/dartssh2.dart';

void main() async {
  final jumpServer = SSHClient(
    await SSHSocket.connect('pubnetip  on HostA', 22222),
    username: 'root',
    onPasswordRequest: () => 'xxxxx',
  );
  print("jumpServer ");

  final client = SSHClient(
    await jumpServer.forwardLocal('internal ip on HostB', 22),
    username: 'root',
    onPasswordRequest: () => 'xxxxx',
  );
  print("client ");
  print(utf8.decode(await client.run('hostname')));
  print(utf8.decode(await client.run('ifconfig')));
  print("client close");
  client.close();
  jumpServer.close();
}

the code can work sometimes,but it will meet err mosttime

E/flutter (22717): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: SSHAuthAbortError(Connection closed before authentication)

mostcute avatar Jul 07 '23 02:07 mostcute

same error ):

DevAloshe avatar Jul 15 '23 00:07 DevAloshe

After client = SSHClient(...);, try:

  try {
    // Ensure we are connected and authenticated correctly
    await client.ping().catchError((e) => throw e);
  } catch (e, s) {
    // Handle SSH auth errors here
  }

Initially, I had:

  try {
    // Ensure we are connected and authenticated correctly
    await client.authenticated.catchError((e) => throw e);
  } catch (e, s) {
    // Handle SSH auth errors here
  }

but I was experiencing the same SSHAuthAbortError when I did that. This sends a keep alive to the server, in addition to waiting for authentication to complete.

xavierchanth avatar Dec 09 '23 02:12 xavierchanth

could check the version of ssh server this lib checks SSH2 in meta data received from the server, so if the ssh server is 1.xSSHAuthAbortError(Connection closed before authentication) will occur

wukgdu avatar Mar 29 '24 10:03 wukgdu

try this final client = SSHClient( await SSHSocket.connect('localhost', 22), username: '', onPasswordRequest: () => '', );

aqueebqazi avatar Mar 27 '25 11:03 aqueebqazi