Paramiko SSH连接超时时间的最大值?
根据目前的经验,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