Définir le délai de connexion SSH

J'essaie de réduire le temps que ssh essaie d'ouvrir une connexion à un hôte. Si je mets par exemple ssh www.google.com cela prend très longtemps jusqu'à ce que l'invite revienne.

J'ai lu à propos de l'utilisation de ssh -o ConnectTimeout=10 www.google.com à la place, mais même cela prend très longtemps. Est-il peut-être un certain nombre de tentatives, je peux modifier pour diminuer le temps de blocage?

31
demandé sur multiholle 2012-04-20 02:11:43

2 réponses

Le problème peut être que ssh essaie de se connecter à Tous les différentes adresses IP auxquelles www.google.com résout. Par exemple sur ma machine:

# ssh -v -o ConnectTimeout=1 -o ConnectionAttempts=1 www.google.com
OpenSSH_5.9p1, OpenSSL 0.9.8t 18 Jan 2012
debug1: Connecting to www.google.com [173.194.43.20] port 22.
debug1: connect to address 173.194.43.20 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.19] port 22.
debug1: connect to address 173.194.43.19 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.18] port 22.
debug1: connect to address 173.194.43.18 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.17] port 22.
debug1: connect to address 173.194.43.17 port 22: Connection timed out
debug1: Connecting to www.google.com [173.194.43.16] port 22.
debug1: connect to address 173.194.43.16 port 22: Connection timed out
ssh: connect to host www.google.com port 22: Connection timed out

Si je l'exécute avec une adresse IP spécifique, il retourne beaucoup plus vite.

EDIT : Je l'ai chronométré (avec time) et les résultats sont:

  • www.google.com - 5.086 secondes
  • 173.94.43.16 - 1.054 secondes
49
répondu sinelaw 2013-01-30 19:57:42

L'option ConnectTimeout vous permet d'indiquer à votre client ssh combien de temps vous êtes prêt à attendre une connexion avant de renvoyer une erreur. En définissant ConnectTimeout sur 1, vous dites effectivement "essayez au plus 1 seconde, puis échouez si vous ne vous êtes pas encore connecté".

Le problème est que lorsque vous vous connectez par nom, la recherche DNS peut prendre plusieurs secondes. La connexion par adresse IP est beaucoup plus rapide et peut fonctionner en une seconde ou moins. Ce que sinelaw vit c'est que chaque tentative de connexion par nom DNS ne se produit pas dans une seconde. Le paramètre par défaut de ConnectTimeout reporte au délai de connexion du noyau linux, qui est généralement assez long.

2
répondu John Calcote 2016-02-11 23:36:22