TerminalStudio / dartssh2

SSH and SFTP client written in pure Dart, aiming to be feature-rich as well as easy to use.
https://pub.dev/packages/dartssh2
MIT License
199 stars 49 forks source link

SSHAuthAbortError(Connection closed before authentication) when using jumpServer #83

Open mostcute opened 12 months ago

mostcute commented 12 months ago
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)

DevAloshe commented 11 months ago

same error ):

XavierChanth commented 6 months ago

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.

wukgdu commented 3 months ago

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