使用Python的Paramiko连接远程系统时遇TimeoutError [WinError 10060]求助
解决SSH连接超时(WinError 10060)的方案
先排查网络和端口连通性
- 打开本地CMD,执行
ping <IP Address>,确认远程主机能被正常访问。如果ping不通,先检查IP是否正确、远程主机是否开机、是否在同一网络/有路由可达。 - 再执行
telnet <IP Address> 22,测试22端口是否开放。连不上的话,要么远程SSH服务没启动,要么本地/远程防火墙拦截了22端口。
检查远程SSH服务状态
- 远程主机上确认SSH服务在运行:Linux执行
systemctl status sshd,Windows看服务列表里的「OpenSSH Server」是否启动。 - 确认远程SSH监听的端口是22:Linux执行
ss -tulpn | grep sshd,如果端口不是22,代码里的port参数要改成对应值。
给代码加超时参数
默认连接超时时间可能太短,在ssh.connect()里手动设置超时:
ssh.connect(host, port, username, password, timeout=30) # 设置30秒超时,可按需调整
排查本地环境限制
- 如果是公司网络,可能有代理或防火墙禁止SSH出站,联系IT确认权限。
- 临时关闭本地杀毒软件/防火墙试试,这类软件常拦截SSH连接。
换用密钥登录(更稳定安全)
密码登录可能被远程主机的安全策略限制,试试密钥登录:
- 本地CMD执行
ssh-keygen -t rsa,一路回车生成密钥对。 - 把本地
C:/Users/你的用户名/.ssh/id_rsa.pub里的内容,复制到远程主机的~/.ssh/authorized_keys文件中(Linux),或者Windows远程主机的C:\Users\远程用户名\.ssh\authorized_keys。 - 修改代码用密钥登录:
from paramiko import RSAKey private_key = RSAKey.from_private_key_file('C:/Users/你的用户名/.ssh/id_rsa') ssh.connect(host, port, username, pkey=private_key)
开启调试日志定位问题
给paramiko加日志,看连接过程的详细错误:
import paramiko paramiko.util.log_to_file('ssh_debug.log') # 日志会写入当前目录的ssh_debug.log
运行代码后查看日志文件,能找到更具体的失败原因。
内容的提问来源于stack exchange,提问作者Kiran Siddeshwar
相关产品推荐
相关产品推荐

