diff --git a/client/core/defs.h b/client/core/defs.h index 257de62f..bafd088f 100644 --- a/client/core/defs.h +++ b/client/core/defs.h @@ -35,7 +35,7 @@ enum ErrorCode // Ssh connection errors SshRequsetDeniedError, SshInterruptedError, SshInternalError, - SshPrivateKeyError, + SshPrivateKeyError, SshPrivateKeyFormatError, // Ssh sftp errors SshSftpEofError, SshSftpNoSuchFileError, SshSftpPermissionDeniedError, diff --git a/client/core/errorstrings.cpp b/client/core/errorstrings.cpp index 8108ff53..5d2a337b 100644 --- a/client/core/errorstrings.cpp +++ b/client/core/errorstrings.cpp @@ -22,6 +22,7 @@ QString errorString(ErrorCode code){ case(SshInterruptedError): return QObject::tr("Ssh request was interrupted"); case(SshInternalError): return QObject::tr("Ssh internal error"); case(SshPrivateKeyError): return QObject::tr("Invalid private key or invalid passphrase entered"); + case(SshPrivateKeyFormatError): return QObject::tr("The selected private key format is not supported, use openssh ED25519 key types or PEM key types"); // Libssh sftp errors case(SshSftpEofError): return QObject::tr("Sftp error: End-of-file encountered"); diff --git a/client/core/sshclient.cpp b/client/core/sshclient.cpp index fe92af7e..39d9f4f1 100644 --- a/client/core/sshclient.cpp +++ b/client/core/sshclient.cpp @@ -77,16 +77,21 @@ namespace libssh { if (privateKey) { ssh_key_free(privateKey); } + if (authResult != SSH_OK) { + qDebug() << ssh_get_error(m_session); + ErrorCode errorCode = fromLibsshErrorCode(ssh_get_error_code(m_session)); + if (errorCode == ErrorCode::NoError) { + errorCode = ErrorCode::SshPrivateKeyFormatError; + } + return errorCode; + } } else { authResult = ssh_userauth_password(m_session, authUsername.c_str(), credentials.password.toStdString().c_str()); + if (authResult != SSH_OK) { + qDebug() << ssh_get_error(m_session); + return fromLibsshErrorCode(ssh_get_error_code(m_session)); + } } - - if (authResult != SSH_OK) { - qDebug() << ssh_get_error(m_session); - return fromLibsshErrorCode(ssh_get_error_code(m_session)); - } - - return fromLibsshErrorCode(ssh_get_error_code(m_session)); } return ErrorCode::NoError; }