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