diff --git a/ShhShell/SSH/SSHHandler.swift b/ShhShell/SSH/SSHHandler.swift index 31e71bd..3ab65f5 100644 --- a/ShhShell/SSH/SSHHandler.swift +++ b/ShhShell/SSH/SSHHandler.swift @@ -71,29 +71,29 @@ class SSHHandler: @unchecked Sendable, ObservableObject { //TODO: check hostkey - for method in getAuthMethods() { - switch method { - case .password: - do { try authWithPw() } catch { - state = .authFailed - print("pw auth error") - print(error.localizedDescription) + while state != .authorized { + for method in getAuthMethods() { + switch method { + case .password: + do { try authWithPw() } catch { + state = .authFailed + print("pw auth error") + print(error.localizedDescription) + } + case .publickey: + do { try authWithPubkey() } catch { + state = .authFailed + print("error with pubkey auth") + print(error.localizedDescription) + } + case .hostbased: + disconnect() + case .interactive: + disconnect() } - case .publickey: - do { try authWithPubkey() } catch { - state = .authFailed - print("error with pubkey auth") - print(error.localizedDescription) - } - case .hostbased: - disconnect() - case .interactive: - disconnect() } } - guard state == .authorized else { return } - ssh_channel_request_env(channel, "TERM", "xterm-256color") ssh_channel_request_env(channel, "LANG", "en_US.UTF-8") ssh_channel_request_env(channel, "LC_ALL", "en_US.UTF-8")