You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用jnpr.junos库建立设备连接时出现SSHError报错

解决jnpr.junos连接Junos设备时的SSHError: Could not open socket问题

问题描述

使用jnpr.junos库建立Junos设备连接时,出现以下报错:

File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/jnpr/junos/device.py", line 1374, in open
    self._conn = netconf_ssh.connect(
                 ^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/ncclient/manager.py", line 187, in connect
    return connect_ssh(*args, **kwds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/ncclient/manager.py", line 139, in connect_ssh
    session.connect(*args, **kwds)
  File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/ncclient/transport/ssh.py", line 288, in connect
    raise SSHError("Could not open socket to %s:%s" % (host, port))
ncclient.transport.errors.SSHError: Could not open socket to 10.233.146.10:830

测试代码如下:

from pprint import pprint
from jnpr.junos import Device
from jnpr.junos.utils.config import Config 

print("Prueba de conexion a equipo")

dev = Device(host='10.233.146.10', user='user', password='password' )
dev.open()

print ("the router basic information is: ")

cu = Config(dev)

print (cu)

print("closing connection")    
dev.close()

排查与解决步骤

  • 验证网络连通性
    先确认执行脚本的主机能正常ping通目标设备:

    ping 10.233.146.10
    

    如果ping不通,排查设备是否在线、路由是否可达、中间网络是否有阻断。

  • 检查端口可达性
    使用nc或telnet测试830端口(NETCONF默认端口)是否开放:

    nc -zv 10.233.146.10 830
    # 或者用telnet
    telnet 10.233.146.10 830
    

    若连接失败,说明设备未开启830端口,或中间防火墙拦截了流量。

  • 确认设备NETCONF配置
    登录Junos设备,检查NETCONF服务是否启用:

    show system services netconf
    

    若未配置,添加以下配置并提交:

    set system services netconf ssh port 830
    commit
    
  • 调整SSH兼容性参数
    若设备SSH版本与客户端不兼容,可在初始化Device时指定SSH参数:

    # 读取本地ssh_config配置
    dev = Device(host='10.233.146.10', user='user', password='password', ssh_config=True)
    # 或强制指定SSH协议版本
    dev = Device(host='10.233.146.10', user='user', password='password', ssh_args=['-o', 'Protocol=2'])
    
  • 检查防火墙规则
    确认执行脚本的主机防火墙允许出站830端口流量,同时设备侧防火墙/安全组允许入站830端口的SSH连接。

  • 验证设备端口占用情况
    登录设备,检查830端口是否被其他服务占用:

    netstat -an | grep 830
    

内容的提问来源于stack exchange,提问作者Carlos Castillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:43:22