根据目前的经验,最大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)
答案 0 :(得分:2)
我认为你必须在内核级别设置它。 Paramiko通过socket.settimeout()
设置超时,这通过操作系统(我不确定,但你的情况似乎如此)。 Linux的超时设置为20秒(read this)。在同一个链接中,他们解释了如何增加套接字超时:
我建议您将其设置为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