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

使用Paramiko连接Cisco SG350交换机SSH被拒问题排查

问题解决:Paramiko连接Cisco SG350交换机失败,改用invoke_shell()恢复正常

问题现象

  • 本地公钥已预存至Cisco SG350交换机,普通控制台SSH连接正常,但使用Paramiko脚本连接时直接中断
  • 控制台连接时,交换机日志生成1条拒绝、1条接受记录;Paramiko连接仅触发拒绝记录
  • 测试命令ssh -v sshUser@192.168.1.254 "show version"时控制台卡住,使用ssh -vtt命令出现流错误并断开连接

问题根源

Cisco SG350型号交换机未实现SSH exec通道。Paramiko默认常用的exec_command()依赖exec通道执行单条命令,但该交换机无法正确响应这类请求,导致连接异常。

解决方案

改用Paramiko的invoke_shell()函数建立交互式shell会话,替代exec通道完成命令交互。示例代码如下:

import paramiko
import time

# 初始化SSH客户端
ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# 通过本地私钥认证连接交换机
ssh_client.connect(
    hostname='192.168.1.254',
    username='sshUser',
    key_filename='/path/to/your/private_key'  # 替换为本地私钥路径
)

# 创建交互式shell会话
shell = ssh_client.invoke_shell()
# 发送命令(注意添加换行符模拟控制台输入)
shell.send('show version\n')

# 等待命令执行并读取输出
time.sleep(1)
output = shell.recv(65535).decode('utf-8')
print(output)

# 关闭连接
ssh_client.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:04:50