From 82b2f1e3d503e3eaebbb774eeecad86730de74f3 Mon Sep 17 00:00:00 2001 From: XiaoliChan <30458572+XiaoliChan@users.noreply.github.com> Date: Fri, 10 Nov 2023 13:50:08 +0800 Subject: [PATCH] [ssh] fix #112 Signed-off-by: XiaoliChan <30458572+XiaoliChan@users.noreply.github.com> --- nxc/protocols/ssh.py | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/nxc/protocols/ssh.py b/nxc/protocols/ssh.py index 0a81f2adf..40e3441cf 100644 --- a/nxc/protocols/ssh.py +++ b/nxc/protocols/ssh.py @@ -195,9 +195,16 @@ def plaintext_login(self, username, password, private_key=None): with open(self.args.key_file) as f: private_key = f.read() - pkey = paramiko.RSAKey.from_private_key(StringIO(private_key), password) - - self.conn._transport.auth_publickey(username, pkey) + pkey = paramiko.RSAKey.from_private_key(StringIO(private_key)) + self.conn.connect( + self.host, + port=self.port, + username=username, + passphrase=password if password != "" else None, + pkey=pkey, + look_for_keys=False, + allow_agent=False, + ) cred_id = self.db.add_credential( "key", @@ -208,7 +215,14 @@ def plaintext_login(self, username, password, private_key=None): else: self.logger.debug(f"Logging {self.host} with username: {self.username}, password: {self.password}") - self.conn._transport.auth_password(username, password, fallback=True) + self.conn.connect( + self.host, + port=self.port, + username=username, + password=password, + look_for_keys=False, + allow_agent=False, + ) cred_id = self.db.add_credential("plaintext", username, password) # Some IOT devices will not raise exception in self.conn._transport.auth_password / self.conn._transport.auth_publickey