Je me demandais s'il y avait un moyen de changer le répertoire par défaut dans lequel je me mettrais après avoir SSH sur mon serveur Ubuntu.
99% du temps lorsque je me connecte à mon serveur, c'est pour accéder aux fichiers d'un répertoire spécifique:
/var/www/websites
Existe-t-il un fichier de configuration que je peux éditer pour être sûr d'être placé directement dans ce répertoire lors de ma connexion?
Il existe deux façons d'y parvenir:
cd /var/www/websites
à la fin de votre .bashrc
. J'utilise celui-ci sur nos marionnettistes car je veux toujours être dans/etc/puppet/environnements/dkaarsemaker là-bas au lieu de mon homedir :-)Si vous utilisez des clés pour la connexion SSH, vous pouvez modifier le chemin d'accès en ajoutant command=
à avant une clé dans ~/.ssh/authorized_keys
sur votre distant serveur. Exemple:
command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key
Il est bon de générer et d'utiliser plusieurs clés pour le même utilisateur. Une clé sur le serveur peut contenir la commande que 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
C'est ce qui va se passer:
local$ ssh websites-my-Host
webmaster@realhostname:/var/www/websites$ _
ou:
local$ ssh my-Host
webmaster@realhostname:~$ _
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 user@server
Vous pouvez placer la directive SendEnv dans ~/.ssh/config pour ne pas avoir à l'inclure sur la ligne de commande.
Si vous placez les éléments suivants dans votre ~/.profile (pour affecter uniquement 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 en celui spécifié dans la variable d'environnement lorsque vous vous connecterez, s'il est spécifié et s'il s'agit d'un répertoire.