需要帮助解决paramiko问题

0 投票
1 回答
1919 浏览
提问于 2025-04-17 07:57

我可以使用pexpect连接到服务器,登录和运行命令都没有问题。不过,我想换成用paramiko来建立ssh连接,这样可以利用paramiko的一些其他模块。但是,当我使用paramiko时,出现了这个错误:

sock.connect((hostname, port))
  File "<string>", line 1, in connect
socket.error: [Errno 113] No route to host

我不明白为什么会说“没有到主机的路由”,因为我确实可以通过pexpect连接到这个节点,或者直接用ssh连接到这个节点。

如果有人能帮我找出问题所在,我将非常感激。我甚至不知道该如何开始排查这个问题。

我在启用调试的情况下运行paramiko,像这样,但我没有收到任何调试信息,脚本就直接失败了:

paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG)

1 个回答

1

如果你能提供一个简化的代码示例,那会很有帮助。

检查一下名字解析是否正常进行:

socket.gethostbyname(hostname)

另外,我不太明白你为什么要直接使用 socket?还是说这是你在遇到错误时看到的堆栈跟踪和错误信息的一部分?

你应该可以用下面这样的方式来实现你想要的功能:

from paramiko.client import SSHClient
client = SSHClient()
client.load_system_host_keys()
client.connect('ssh.example.com')
stdin, stdout, stderr = client.exec_command('ls -l')
print stdout

如果你能提供完整的错误信息、堆栈跟踪和你使用的代码,那会更有帮助。

撰写回答