web-dev-qa-db-fra.com

Le port personnalisé pour le client SSH dans $ HOME / .ssh / config ne fonctionne pas

J'utilise un fichier de configuration pour mon client OpenSSH au lieu de définir des options en ligne de commande chaque fois que cela est nécessaire, exemple de mon fichier de configuration:

$ cat ~/.ssh/config

---- TOP PIÈCES RÉDUITES ICI ----

Host hmnw
        Hostname hmnw.mydomain.com 
        User myname
        Port 60022
        IdentityFile ~/.ssh/id_rsa

Quand j'essaie de ssh à cet hôte:

$ ssh hmnw

Ça ne marche pas.

Mais quand je fais

$ ssh -p 60022 hmnw

Ça passe à travers.

Par curiosité, j’ai fait strace sur ce processus:

$ ssh hmnw&
$ Sudo strace -p $!
connect(3, {sa_family=AF_INET, sin_port=htons(22), sin_addr=inet_addr("XX.XX.XX.XX")}, 16

Je comprends qu’il essaie de se connecter au port 22 par défaut de SSH.

Remarque: J'ai changé mon nom d'hôte et mon adresse IP réels ci-dessus.

Qu'est-ce que je fais mal?

Ma version ssh

$ ssh -V
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016

Ajouter ceci après la suggestion de @ muru

$ ssh -vvvv hmnw                                                            
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g  1 Mar 2016
debug1: Reading configuration data /home/myname/.ssh/config
debug1: /home/myname/.ssh/config line 2: Applying options for *
debug1: /home/myname/.ssh/config line 21: Applying options for hmnw
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "hmnw.mydomain.com" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to hmnw.mydomain.com [xx.xx.xx.xx] port 22.
2
sdkks

J'ai trouvé le morceau de délinquant dans la configuration, c'est mon erreur basée sur une hypothèse:

Haut de mon fichier ~/.ssh/config

### default for all ##
Host *
     ForwardAgent no
     ForwardX11 no
     ForwardX11Trusted yes
     User myname
     Port 2222
     Protocol 2
     ServerAliveInterval 30
     ServerAliveCountMax 120

Le port 2222 a remplacé le port 60022 ci-dessous, qui appartient à hmnw.

J'ai enlevé Port 2222 de Host *, maintenant cela fonctionne.

Mise à jour: comme suggéré par @ muru, déplacer la configuration par défaut de haut en bas du fichier config me permet d'utiliser une entrée de port personnalisée pour la valeur par défaut *

La suggestion de @ steeldriver Host * !hmnw est également utile. Je n'ai pas encore de scénario d'utilisation, mais je vois que cela me permettrait d'annuler certains paramètres pour un hôte particulier, si nécessaire.

2
sdkks

Il semble que ssh (sous Ubuntu 16.04) n’utilise pas ~/.ssh/config par défaut, ce qui contredit le guide sur OpenSSH configuration du client , en disant que

Les options de ligne de commande ont priorité sur les fichiers de configuration. Le fichier de configuration spécifique à l'utilisateur ~/.ssh/config est utilisé ensuite. Enfin, le fichier global/etc/ssh/ssh_config est utilisé. La première valeur obtenue pour chaque paramètre de configuration sera utilisée.

Alors que les deux solutions suivantes fonctionnent toujours:

  1. Sudo ssh -F ~/.ssh/config the_name_after_Host
  2. place les lignes de configuration dans le fichier /etc/ssh/ssh_config (au début du fichier) au lieu de ~/.ssh/config
0
Ian