Skip to main content
 首页 » 编程设计

python之Paramiko 在身份验证期间挂起,当由 unittest runner 运行时

2025年05月04日9Renyi-Fan

美好的一天。

paramiko ssh 客户端有一个奇怪的问题。 Connect paramiko 方法在 unittest2 类/函数外部调用时挂起,代码由 unittest runner 运行。

有一段代码,出现问题的地方:

import paramiko 
import unittest2 
 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('172.18.67.10', 
            username='root', 
            password='secrete') 
_, stdout, _ = ssh.exec_command('date') 
 
 
class TestTest(unittest2.TestCase): 
    def setUp(self): 
        pass 

如果我将 ssh.connect 移动到 TestTest 类或 setUpModule 函数中,连接将会成功。当代码由原始 Python 解释器运行时,一切都正常。

当我尝试调试 paramiko 时,我在 paramiko/auth_handler.py:AuthHandler.wait_for_response 方法中的 while True 循环中发现了这个问题.

有什么建议吗?

请您参考如下方法:

根据 this SO answer ,这似乎是 paramiko 中与线程相关的错误,可以通过在导入期间不调用 connect() 来避免。