web-dev-qa-db-fra.com

Stockage permanent des adresses lors de l'utilisation de SSH

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

Existe-t-il un moyen de stocker en permanence des valeurs dans le terminal afin que je puisse effectuer les opérations suivantes?

server1 = 111.222.111.222

Et tapez des commandes comme:

ssh root@server1

au lieu de:

ssh [email protected]
12
theusual

Pour les connexions SSH, vous pouvez créer un fichier de configuration utilisateur ~/.ssh/config et 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 du système local). Voir man ssh_config pour plus de détails.

22
steeldriver

Oui, il suffit de les écrire 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 la sauvegarde, vous pouvez accéder au serveur par son nom.

14
chaos

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 les valeurs de manière permanente dans le terminal", vous recherchez des variables Shell. La manière de les configurer dépendra de votre shell (je suppose que echo $Shell fournira les informations pertinentes).

Si par "en permanence" vous voulez dire "tant que je ne quitte pas cette session de terminal", vous pouvez simplement utiliser la commande export server1=111.222.111.222 si vous utilisez un shell basé sur bash (setenv server1 111.222.111.222 pour un shell basé sur csh/tcsh-, si mes souvenirs sont exacts). Ensuite, vous pouvez accéder à votre variable en la préfixant avec $: ssh root@$server1.

Si par "en permanence" vous voulez dire "à chaque fois que je lance un nouveau terminal", vous devrez alors définir votre variable dans l'un des fichiers init du shell. Par exemple. dans $HOME/.bashrc pour les shells basés sur bash ou $HOME/.cshrc - en utilisant vraisemblablement 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/.bashrc] ou ouvrir un nouveau shell pour que les modifications soient prises en compte.

NB: La réponse de mémoire peut nécessiter quelques ajustements mineurs.

8

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

1
DTR

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 source ou . lorsque vous voulez que cette configuration soit effective.

Si c'est quelque chose que vous voulez tout le temps, vous pouvez l'obtenir en .profile (pour les shells de connexion) ou en .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 en fonction de vos besoins, à condition de vous assurer qu'ils ne se superposent pas si vous appelez l'un d'entre eux après en avoir d'abord appelé un autre.

0
Joe