1

我正在使用 ncclient 连接到 netconf。但是,当我尝试通过 python 连接时

抛出“ncclient.transport.errors.SessionCloseError:意外的会话关闭”错误。我正在使用的代码片段如下

manager.connect('<servername>',22,username='<username>')

对此的任何帮助都非常受欢迎。我可以使用公钥连接到远程服务器,因此我没有在连接中提供密码

在 netconf 服务器日志中,我可以看到拒绝访问错误。(即使我尝试使用用户名和密码,我也遇到了同样的问题)

4

2 回答 2

1

你没有提供很多信息。

  1. 你用的是哪个版本的ncclient
  2. 您使用的是哪个版本的 Python?
  3. 您要连接到哪个 NETCONF 实现?这是一个实际的交换机或路由器,还是运行 Linux 服务器之类的libnetconf东西yuma

根据这里的信息,我可以想象有几件事是错误的:

  • paramiko没有使用正确的密钥来建立 SSH 传输。
  • 您正在尝试与 SSH 服务器而不是 NETCONF 服务器建立 NETCONF 会话。

在您的脚本中,使用类似的内容创建一些日志,manager.logging.basicConfig(filename='ncclient.log', level=manager.logging.DEBUG)然后重新运行您的脚本 - 您是否获得了更多信息?

这是一个老问题,但我希望我至少可以为您指明正确的方向。

于 2013-01-07T05:21:44.317 回答
0

您的机器可能彼此不认识(例如当您通过普通 ssh 连接并获得“未知密钥,真的连接(y/n)?”错误。在这种情况下,默认情况下会话不会连接。到使用“unknown_host_cb”参数更改此行为:

def allowUnknownHosts(host,fingerprint):
  return True

self.manager = manager.connect(host=host, port=port, username=user,password=password, unknown_host_cb=allowUnknownHosts)
于 2013-02-01T18:32:09.277 回答