GNU/Linux >> Tutoriels Linux >  >> Linux

Changer le répertoire par défaut lorsque je me connecte en SSH au serveur

Solution 1 :

Il existe deux façons d'y parvenir :

  • Changez votre répertoire personnel sur le serveur en /var/www/websites (ce n'est pas vraiment une bonne idée)
  • ajouter cd /var/www/websites à la fin de votre .bashrc . J'utilise celui-ci sur nos puppetmasters car je veux toujours être dans /etc/puppet/environments/dkaarsemaker là-bas au lieu de mon homedir :-)

Solution 2 :

Si vous utilisez des clés pour la connexion SSH, vous pouvez modifier le chemin en ajoutant command= avant une clé en ~/.ssh/authorized_keys sur votre télécommande serveur. Exemple :

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

Il est possible de générer et d'utiliser plusieurs clés pour le même utilisateur. Une clé sur le serveur peut contenir la commande, l'autre ne peut pas - de cette façon, vous sélectionnez le comportement attendu au moment de la connexion. Vous pouvez simplement conclure avec local ~/.ssh/config :

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

Voici ce qui va se passer :

local$ ssh websites-my-host
[email protected]:/var/www/websites$ _

ou :

local$ ssh my-host
[email protected]:~$ _

Solution 3 :

Openssh sshd accepte par défaut ces variables d'environnement du client :

AcceptEnv LANG LC_*

Vous pouvez l'utiliser pour envoyer une valeur de l'environnement local du client au serveur comme ceci :

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH [email protected]

Vous pouvez placer la directive SendEnv dans ~/.ssh/config pour ne pas avoir à l'inclure sur la ligne de commande.

Si vous placez ce qui suit dans votre ~/.profile (pour n'affecter que les connexions interactives, utilisez .profile, pour affecter toutes les connexions, utilisez .bashrc) :

if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
  cd "$LC_CDPATH";
fi

Ensuite, il changera automatiquement de répertoire pour celui spécifié dans la variable d'environnement lors de votre connexion, s'il est spécifié et s'il s'agit d'un répertoire.

Solution 4 :

Depuis OpenSSH 7.6, vous pouvez utiliser la nouvelle option RemoteCommand pour y parvenir.

Dans votre ~/.ssh/config :

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/keyfile
    User webmaster
    RequestTTY force # check if this is necessary
    RemoteCommand cd /var/www/websites && bash -l

Linux
  1. Quand utiliser Nohup ?

  2. Comment changer la version PHP par défaut dans Plesk

  3. Modifier le nom d'hôte d'un serveur Linux

  4. Quand utiliser un serveur dédié

  5. PuTTY :modifier le répertoire de connexion SSH par défaut

Serveur SSH Ubuntu 20.04

Commande cd sous Linux (changer de répertoire)

Serveur SSH

Ssh – Restreindre un utilisateur Ssh/scp/sftp à un répertoire ?

Modifier le numéro de port du serveur SSH par défaut

Comment changer le port SSH par défaut sous Linux [correctement et en toute sécurité]