Solución 1:
Hay dos formas de lograr esto:
- Cambie su directorio de inicio en el servidor a /var/www/websites (esto no es realmente una buena idea)
- añadir
cd /var/www/websites
hasta el final de tu.bashrc
. Utilizo este en nuestros titiriteros porque siempre quiero estar en /etc/puppet/environments/dkaarsemaker allí en lugar de mi homedir :-)
Solución 2:
Si usa claves para el inicio de sesión SSH, puede cambiar la ruta anteponiendo command=
antes de una tecla en ~/.ssh/authorized_keys
en tu control remoto servidor. Ejemplo:
command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key
Está bien generar y usar varias claves para el mismo usuario. Una clave en el servidor puede contener el comando y la otra no; de esta manera, selecciona el comportamiento esperado en el momento del inicio de sesión. Simplemente puede envolverlo con 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
Esto es lo que ocurrirá:
local$ ssh websites-my-host
[email protected]:/var/www/websites$ _
o:
local$ ssh my-host
[email protected]:~$ _
Solución 3:
Openssh sshd por defecto acepta estas variables de entorno del cliente:
AcceptEnv LANG LC_*
Puede usar eso para enviar un valor desde el entorno local del cliente al servidor como este:
LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH [email protected]
Puede colocar la directiva SendEnv en ~/.ssh/config para que no tenga que incluirla en la línea de comando.
Si coloca lo siguiente en su ~/.profile (para afectar solo los inicios de sesión interactivos use .profile, para afectar a todos los inicios de sesión use .bashrc):
if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
cd "$LC_CDPATH";
fi
Luego, cambiará automáticamente el directorio al especificado en la variable de entorno cuando inicie sesión, si está especificado y si es un directorio.
Solución 4:
Desde OpenSSH 7.6, puede usar la nueva opción RemoteCommand para lograrlo.
En tu ~/.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