Dans le cadre de mes efforts pour réduire le bruit dans les journaux et réduire légèrement la découvrabilité (et en plus de fail2ban, autorisant uniquement l'authentification par clé publique, etc.), je change régulièrement les ports sshd sur les serveurs que j'ai configurés sur un autre port, disons 5492. Actuellement J'ajoute -p 5492 à ma commande ssh ou j'ajoute le port de chaque serveur spécifique dans mon ssh_config
.
Existe-t-il un moyen de configurer ssh pour essayer de se connecter au port 22 et au port 5492 si le port 22 ne fonctionne pas?
ssh
command-line
Riley
la source
la source
ssh
présence pour l'extérieur.Réponses:
Vous pouvez envelopper un script shell,
ssh
maisssh
lui-même ne le fera pas.Une façon d'utiliser une fonction bash est la suivante (mise en
~/.bashrc
):Soit dit en passant, il est recommandé d'utiliser des
root
ports réservés pour les services système,ssh
afin d'éviter aux utilisateurs d'avoir un processus qui écoute, par exemple, le port 5492. Ils peuvent sinon jouer l'homme au milieu et éventuellement capturer les données de connexion. Utilisez donc un port <1024.la source
ssh
retourne non nulle. Un exemple trivial seraitssh user@server false
.command
maintenant. Je voulais juste éviter la récursivité, comme vous l'avez deviné.ssh
- s'il y a une erreur ssh (par opposition à l'échec de la commande à distance), il se terminera avec un état de 255. Ainsi, celacommand ssh -p 22 "$@"; if [ "$?" -eq 255 ]; then command ssh -p 5492 "$@"; fi
devrait fonctionner.ssh
lui-même peut le faire viaMatch
documenté dansssh_config(5)
bien que la documentation soit quelque peu clairsemée d'exemples. Cette forme peut convenir si l'on veut pousser la complexité dans la configuration SSH, bien qu'elle soit limitée par les limitations de lassh_config(5)
syntaxe et peut nécessiter quelques manipulations pour le résultat souhaité. Notamment, le port personnalisé ne peut pas être défini ou peut être défini de manière incorrecte lors de laMatch
tentative précédente . C'est pourquoi, ci-dessous, il est défini deux fois lors des tests ou une fois pour la valeur par défaut, et n'est pas défini lors de l'établissement des valeurs par défaut canoniques.is-ssh-up
vérifie simplement si quelque chose répond sur le port donné et pourrait ressemblerla source
Vous pouvez utiliser la fonction générique de
~.ssh/config
, en mettant cette entrée dans votre liste:Mais cela ne retombera pas à 22 en lui-même.
Si vous le mettez à la fin, vous pouvez toujours le remplacer pour les hôtes dont vous avez besoin 22 en mettant une valeur différente au-dessus. (Et vous pouvez toujours le remplacer sur la ligne de commande.)
la source