GNU/Linux >> Tutoriales Linux >  >> Linux

Cambiar el directorio predeterminado cuando hago SSH al servidor

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

Linux
  1. Cambiar el nombre de host de un servidor Linux

  2. ¿Cómo cambio el directorio raíz de un servidor Apache?

  3. Cambiar el servidor DNS predeterminado en Arch Linux

  4. ¿Cómo empiezo en bash cuando hago ssh en mi servidor?

  5. ¿Debo cambiar el puerto SSH predeterminado en los servidores Linux?

Servidor Ubuntu 20.04 SSH

Comando Cd en Linux (Cambiar Directorio)

Servidor SSH

Cómo cambiar el puerto SSH predeterminado en Linux [de forma adecuada y segura]

Cuándo usar un servidor dedicado

PuTTY:cambiar el directorio de inicio de sesión SSH predeterminado