Stocker des adresses de façon permanente lors de l'utilisation de SSH


12

J'ai quelques serveurs distants auxquels je me connecte via le terminal. Les serveurs n'ont pas de domaine, seulement une adresse IP qui est difficile à retenir lorsque j'en ai obtenu quelques-uns.

Existe-t-il un moyen de stocker de manière permanente des valeurs dans le terminal, afin que je puisse faire ce qui suit?

server1 = 111.222.111.222

Et tapez des commandes comme:

ssh root@server1

au lieu de:

ssh root@111.222.111.222

Réponses:


22

Pour les connexions SSH, vous pouvez créer un fichier de configuration utilisateur ~/.ssh/configet y placer les mappages, par exemple

Host server1
  Hostname      111.222.111.222

Vous pouvez facilement ajouter d'autres champs tels que Port(pour les ports non standard) et User(utile si votre nom d'utilisateur sur le système distant diffère de celui sur le système local). Voir man ssh_configpour plus de détails.


14

Oui, notez-les simplement dans le fichier /etc/hosts. Il a la syntaxe suivante:

1.2.3.4 servername additional_servername

Où:

  • 1.2.3.4 est l'adresse IP
  • servername est le nom
  • additional_servername est un nom facultatif

Après l'enregistrement, vous pouvez accéder au serveur par son nom.


@theusual Si c'est la réponse que vous avez donnée, veuillez envisager de l'accepter (cochez sous les boutons de vote haut / bas).
jpmc26

8

Bien sûr, pour votre problème particulier, vous souhaitez suivre les conseils @chaos et @steeldriver, mais dans le cas général, afin de "stocker en permanence les valeurs dans le terminal", vous cherchez à shell les variables. La façon de les définir dépendra de votre shell (je suppose que echo $SHELLcela fournira les informations pertinentes).

Si par "en permanence" vous voulez dire "tant que je ne export server1=111.222.111.222quitte pas cette session de terminal", alors vous pouvez simplement utiliser la commande si vous utilisez un bashshell basé sur ( setenv server1 111.222.111.222pour un csh/tcshshell basé sur, si je me souviens bien). Ensuite , vous pouvez accéder à votre variable en préfixant avec $ : ssh root@$server1.

Si par "en permanence" vous voulez dire "à chaque fois que je lance un nouveau terminal", alors vous devrez définir votre variable dans l'un des fichiers init du shell. Par exemple, $HOME/.bashrcpour les bashshells basés sur, ou $HOME/.cshrc- en utilisant probablement la même syntaxe que celle mentionnée dans le paragraphe précédent. Notez que vous devrez source le fichier init (par exemple source $HOME/.bashrcou ouvrir un nouveau shell pour que les changements soient pris en compte.

NB: Répondre de mémoire, peut nécessiter quelques petits ajustements.


2
Par permanent, je mentionne même si l'ordinateur a redémarré. Je vais y jeter un œil, cela pourrait être utile un certain temps.
2015

Ensuite, la deuxième méthode s'applique (fichiers d'initialisation shell).
Skippy le Grand Gourou

1

Pas une réponse directe à la question (le chaos et le steeldriver ont déjà fourni ce que je pense être les meilleures solutions littérales), mais si vous n'avez besoin de ssh qu'au seul utilisateur à la même adresse dans la majorité des cas, alors regardez l'édition le .bash_aliasesfichier dans votre répertoire personnel devrait être utile, car vous pouvez créer un alias pour la commande de terminal entière.


0

Les réponses spécifiques sont très bonnes.

En général, cependant, si vous voulez que certaines choses soient définies / configurées dans un shell, écrivez simplement un script pour le faire, puis exécutez-le avec sourceou .quand vous voulez que cette configuration soit effective.

Si c'est quelque chose que vous voulez tout le temps, vous pouvez le trouver dans .profile (pour les shells de connexion) ou dans .bashrc pour tous les shells (si vous utilisez bash).

Avec une approche comme celle-ci, vous pouvez avoir plusieurs scripts pour configurer différents environnements de travail selon vos besoins tant que vous vous assurez qu'ils ne se marchent pas les uns sur les autres si vous appelez l'un d'entre eux après en avoir appelé un autre en premier.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.