Recherche de site Web

Comment se connecter en SSH à un répertoire particulier sur Linux


Avez-vous déjà été dans une situation où vous vouliez vous connecter en SSH à un serveur distant et aller immédiatement dans un répertoire ? Oui ? Eh bien, vous êtes sur la bonne voie ! Ce bref tutoriel décrit comment se connecter directement en SSH à un répertoire particulier sur Linux. Cela signifie que nous pouvons changer automatiquement de répertoire lors de la connexion à un système distant via SSH. Non seulement se connecter en SSH à un répertoire spécifique, il est même possible d'exécuter n'importe quelle commande immédiatement après la connexion au serveur distant via SSH.

Se connecter en SSH à un répertoire particulier d'un système Linux distant

Avant de connaître cette méthode, je me connectais généralement d'abord au système distant en utilisant la commande SSH :

$ ssh user@remote-system

Puis entrez dans un répertoire comme ci-dessous :

$ cd <some-directory>

C'est ainsi que je change de répertoire sur un système distant. Plus maintenant ! Pas besoin d'utiliser deux commandes séparées !!

Par exemple, la commande suivante me permet de me connecter en SSH à un système distant (192.168.225.52), et de me déplacer automatiquement dans un répertoire appelé "dir1" :

$ ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 ; bash'

La commande ci-dessus se connectera en SSH à un système distant (192.168.225.52) et se déplacera immédiatement dans un répertoire nommé '/home/ostechnix/dir1', pour enfin vous laisser dans le shell du système distant.

Ici, l'option -t est utilisée pour forcer l'allocation d'un pseudo-terminal, ce qui est nécessaire pour un shell interactif. Si vous ne spécifiez pas cette option, aucun invite ne s'affichera. Et également, si vous n'ajoutez pas " bash" à la fin de la commande ci-dessus, la connexion sera terminée et le contrôle sera rendu au système local.

Voici la sortie d'exemple de la commande ci-dessus :

Se connecter en SSH à un répertoire particulier d'un système Linux distant

Voici quelques exemples supplémentaires de commandes pour se connecter en SSH à un répertoire particulier :

$ ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 ; bash --login'

Ici, l'option --login définit « bash » comme shell de connexion.

Ou,

$ ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 ; exec bash'

Ou,

$ ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 && exec bash -l'

Ici, l'option -l définit « bash » comme shell de connexion.

Dans les exemples ci-dessus, j'ai explicitement mentionné bash comme shell de connexion. Parce que je sais que Bash est le shell par défaut sur mon système distant. Si vous ne connaissez pas le type de shell sur le système distant, utilisez la commande suivante :

$ ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 && exec $SHELL'

Créer un répertoire sur le système distant et s'y connecter automatiquement via SSH

Si vous essayez de vous connecter en SSH à un répertoire qui n'existe pas sur le système distant, vous verrez le message suivant après une authentification réussie :

bash: line 0: cd: /home/ostechnix/dir2: No such file or directory

Comme vous pouvez le voir, le répertoire nommé « dir2 » n'est pas disponible sur le système distant. Si vous voulez créer un répertoire sur un système distant et y accéder automatiquement via SSH, exécutez simplement la commande suivante depuis votre système local :

$ ssh -t ostechnix@192.168.225.52 'mkdir -p dir2 ; cd /home/ostechnix/dir2 ; bash --login'

Créer un répertoire sur un système distant et s'y déplacer automatiquement via SSH

Rendre les changements définitifs

Si vous ne voulez pas taper les commandes ci-dessus manuellement à chaque fois, ajoutez simplement la ou les commandes que vous souhaitez exécuter après vous être connecté à un serveur SSH dans les fichiers ~/.bashrc, ~/.bash_profile ou ~/.profile du système distant.

Modifier le fichier bashrc :

 $ nano ~/.bashrc

Ajoutez la ou les commandes une par une. Dans mon cas, j'ajoute la ligne suivante :

cd /home/ostechnix/dir1 >& /dev/null

Modifier le fichier bashrc

Veuillez noter que vous devez ajouter cette ligne dans le fichier .bash_profile ou .bashrc ou .profile du système distant, et non dans celui de votre système local. Appuyez sur Ctrl+O puis sur ENTREE pour enregistrer et sur Ctrl+X pour fermer le fichier.

Enfin, exécutez la commande suivante pour mettre à jour les modifications :

 $ source ~/.bashrc

Dorénavant, chaque fois que vous vous connecterez (soit via SSH, soit directement), la commande cd s'exécutera et vous atterrirez automatiquement dans le répertoire "/home/ostechnix/dir1".

Se connecter en SSH à un répertoire particulier sur Linux

Exécuter des commandes via SSH sur des systèmes Linux distants

Comme je l'ai déjà dit, ce truc n'est pas seulement pour se déplacer dans un répertoire après s'être connecté à un système distant. Vous pouvez également utiliser cette méthode pour exécuter d'autres commandes.

Par exemple, la commande suivante vous amènera dans le répertoire '/home/ostechnix/dir1' puis exécutera la commande 'uname -a'.

$ ssh -t ostechnix@192.168.225.52 'cd /home/ostechnix/dir1 && uname -a && exec $SHELL'

Exécuter des commandes via SSH sur des systèmes Linux distants

D'autres exemples d'exécution de commandes via SSH sur des systèmes distants sont fournis dans le guide suivant.

  • Exécuter des commandes sur des systèmes Linux distants via SSH

J'espère que cela aide.

Lecture connexe :

  • Comment faire cd et ls en une seule commande
  • Comment utiliser cp ou mv et cd en une seule commande
  • Autoriser ou refuser l'accès SSH à un utilisateur ou groupe particulier sous Linux