Paramiko SSH连接超时时间的最大值?

0 投票
1 回答
7678 浏览
提问于 2025-04-18 16:58

根据目前的经验,Paramiko的SSHClient最大超时时间大约是20秒。有没有办法把这个时间设置为60秒或者更长呢?

这个连接设置让我在20秒后就超时了,即使我把它设置成60秒:

self.ssh = paramiko.SSHClient()
self.ssh.connect(self.cfg.ip, port=self.cfg.port, username=self.cfg.user, password=self.cfg.password, timeout=60)

1 个回答

3

我觉得你得在内核层面设置这个参数。Paramiko通过socket.settimeout()来设置超时时间,而这个设置是通过操作系统来实现的(我不太确定,但你的情况似乎是这样的)。在Linux系统中,默认的超时时间是20秒(可以看看这个链接)。在那个链接里,他们解释了如何增加socket的超时时间:

我建议你把它设置为6、7,或者最多8。设置为6时,实际的连接超时时间大约是45秒,7大约是90秒,而8则大约是190秒。

  # cat /proc/sys/net/ipv4/tcp_syn_retries 
  5
  # echo 6 > /proc/sys/net/ipv4/tcp_syn_retries 

或者可以使用sysctl命令:

  # sysctl net.ipv4.tcp_syn_retries
  net.ipv4.tcp_syn_retries = 5
  # sysctl -w net.ipv4.tcp_syn_retries=6
  net.ipv4.tcp_syn_retries = 6

不过,要让这个设置在重启后依然有效,你需要把它添加到/etc/sysctl.conf文件中:

  net.ipv4.tcp_syn_retries = 6

撰写回答