web-dev-qa-db-fra.com

Comment enregistrer un hôte SSH fréquemment utilisé pour un accès via un terminal?

J'ai un hôte dans lequel je fréquente ssh. Mais je ne veux pas y entrer encore et encore. Dois-je utiliser une variable d'environnement pour cela ou existe-t-il un meilleur moyen?

Cela ne me dérangerait pas une solution généralisée sur l'enregistrement des variables fréquemment utilisées qui existent en dehors d'une seule session bash.

25
Vaish MK

Les variables d'environnement sont destinées à communiquer des informations à plusieurs commandes/processus que vous démarrez dans Shell et que les commandes ou processus attendent d'être présents dans l'environnement. Habituellement, ces variables incluent des options, telles que la variable LESS transmettant les options fréquemment utilisées à less pager, Perl5LIB Pour rechercher des modules Perl dans des emplacements non standard, LC_LANG pour communiquer la langue qu'une commande doit utiliser pour la sortie.

Si l'URL est pour votre usage personnel avec une commande spécifique, utilisez un alias tel que alias au='firefox https://askubuntu.com Ou une fonction telle que open_url(){ firefox "$@" } pour ouvrir l'URL arbitraire que vous fournissez en ligne de commande comme paramètre positionnel à la fonction.

Dans certains cas tels que ssh, vous pouvez définir les propriétés de connexion dans les fichiers de configuration comme expliqué dans réponse de Lekensteyn :

  1. définir le fichier ~/.ssh/config avec le contenu suivant

    Host meh
        HostName meh.example.com
        User admin
        Port 1234
        IdentityFile ~/.ssh/id_rsa
    
  2. utilisez ssh meh pour vous connecter à l'hôte à l'aide du fichier de configuration.

44
Sergiy Kolodyazhnyy

Je suggère également de créer un alias.

Modifiez votre .bashrc (ou peut-être .profile ou fichier similaire) dans votre répertoire personnel. Ajoutez plusieurs alias comme:

alias go='ssh url1'
alias go2='ssh url2'

Ensuite, reconnectez-vous/reconnectez-vous et entrez go ou go2.

14
Lewis B

Je suggère de combiner Sergiy's et Lewis's réponses pour un maximum paresse Efficacité:

Créez d'abord une entrée d'hôte pour ssh:

définir ~/.ssh/config fichier avec le contenu suivant

    Host meh
        HostName meh.example.com
        User admin
        Port 1234
        IdentityFile ~/.ssh/id_rsa

Maintenant ssh meh fonctionne, mais cela pourrait encore être assez long. Il y a autocomplétion (après ssh [Blank]), mais c'est encore beaucoup à taper.

Permet donc de définir également un alias:

Modifiez votre .bashrc dans votre répertoire personnel local. Ajoutez un alias comme:

alias meh='ssh meh'

Vous pouvez maintenant vous connecter à "meh.example.com" en tapant simplement meh dans la fenêtre de votre terminal. Si au lieu de "meh" vous souhaitez utiliser une chaîne plus longue, vous pouvez réellement utiliser la touche [Tab] pour la saisie semi-automatique.

Ou si vous êtes vraiment paresseux, définissez simplement un seul caractère comme alias:

alias m='ssh meh'

Donc, si vous tapez m et appuyez sur Entrée/Retour, votre connexion ssh démarrera immédiatement!

7
Robert Riedl

Encore une autre option consiste à utiliser les fonctionnalités d'historique du Shell. Vous pouvez Ctrl-r dans bash et saisir une sous-chaîne unique de la dernière fois où vous vous êtes rendu à cet endroit. S'il n'y a pas de sous-chaîne unique, vous pouvez simplement utiliser ce qui est le mieux qualifié de sous-chaîne rare et parcourir les entrées de l'historique en appuyant plusieurs fois sur Ctr-r jusqu'à ce que vous y arriviez. Par exemple, vous pouvez taper Ctrl-r et "singes" ou "codemonkeys" ou "odemon" ou "kong" et obtenir

ssh [email protected]

du dernier, et j'espère que la seule fois où vous avez tapé tout cela.

Avec les fonctionnalités d'historique du Shell, il n'y a vraiment aucune raison de taper une commande longue plus d'une fois.

5
JoL

Je crée généralement un .sh qui contient une commande ssh. Par exemple:

# file name: mywebsite-live.sh
ssh [email protected] # or whatever the domain is.

Et puis pour l'exécuter, je fais simplement ./mywebsite-live.sh

Je me rends compte que c'est probablement une solution assez merdique, mais cela fonctionne pour moi et j'espère que cela pourrait fonctionner pour quelqu'un d'autre aussi.

3
PrintlnParams