mirror of
https://github.com/jumpserver/jumpserver.git
synced 2025-09-17 07:49:01 +00:00
perf: 优化针对低版本 ssh 版本的任务
This commit is contained in:
@@ -91,6 +91,15 @@ class JMSInventory:
|
||||
}
|
||||
return var
|
||||
|
||||
@staticmethod
|
||||
def make_protocol_setting_vars(host, protocols):
|
||||
# 针对 ssh 协议的特殊处理
|
||||
for p in protocols:
|
||||
if p.name == 'ssh':
|
||||
if hasattr(p, 'setting'):
|
||||
setting = getattr(p, 'setting')
|
||||
host['old_ssh_version'] = setting.get('old_ssh_version', False)
|
||||
|
||||
def make_account_vars(self, host, asset, account, automation, protocol, platform, gateway):
|
||||
from accounts.const import AutomationTypes
|
||||
if not account:
|
||||
@@ -186,6 +195,8 @@ class JMSInventory:
|
||||
} if account else None
|
||||
}
|
||||
|
||||
self.make_protocol_setting_vars(host, protocols)
|
||||
|
||||
protocols = host['jms_asset']['protocols']
|
||||
host['jms_asset'].update({f"{p['name']}_port": p['port'] for p in protocols})
|
||||
if host['jms_account'] and tp == 'oracle':
|
||||
|
@@ -4,9 +4,8 @@ import time
|
||||
import paramiko
|
||||
from sshtunnel import SSHTunnelForwarder
|
||||
|
||||
from packaging import version
|
||||
|
||||
if version.parse(paramiko.__version__) > version.parse("2.8.1"):
|
||||
class OldSSHTransport(paramiko.transport.Transport):
|
||||
_preferred_pubkeys = (
|
||||
"ssh-ed25519",
|
||||
"ecdsa-sha2-nistp256",
|
||||
@@ -17,7 +16,6 @@ if version.parse(paramiko.__version__) > version.parse("2.8.1"):
|
||||
"rsa-sha2-512",
|
||||
"ssh-dss",
|
||||
)
|
||||
paramiko.transport.Transport._preferred_pubkeys = _preferred_pubkeys
|
||||
|
||||
|
||||
def common_argument_spec():
|
||||
@@ -36,6 +34,8 @@ def common_argument_spec():
|
||||
become_user=dict(type='str', required=False),
|
||||
become_password=dict(type='str', required=False, no_log=True),
|
||||
become_private_key_path=dict(type='str', required=False, no_log=True),
|
||||
|
||||
old_ssh_version=dict(type='bool', default=False, required=False),
|
||||
)
|
||||
return options
|
||||
|
||||
@@ -69,6 +69,8 @@ class SSHClient:
|
||||
params['username'] = self.module.params['login_user']
|
||||
params['password'] = self.module.params['login_password']
|
||||
params['key_filename'] = self.module.params['login_private_key_path'] or None
|
||||
if self.module.params['old_ssh_version']:
|
||||
params['transport_factory'] = OldSSHTransport
|
||||
return params
|
||||
|
||||
def _get_channel(self):
|
||||
|
Reference in New Issue
Block a user