Alterar o diretório padrão quando eu SSH para o servidor

26

Eu queria saber se existe uma maneira de mudar o diretório padrão que eu coloco depois do I SSH no meu servidor Ubuntu.

99% das vezes quando estou acessando meu servidor, é para acessar arquivos dentro de um diretório específico:

/var/www/websites

Existe um arquivo de configuração que eu possa editar para garantir que eu seja colocado diretamente neste diretório quando eu fizer o login?

    
por Bob Flemming 15.04.2013 / 19:19

3 respostas

43

Existem duas maneiras de conseguir isso:

  • Altere o seu diretório de usuário no servidor para / var / www / websites (isso não é realmente uma boa ideia)
  • adicione cd /var/www/websites ao final do seu .bashrc . Eu uso este em nossos maquiadores, como eu sempre quero estar em / etc / puppet / environments / dkaarsemaker lá em vez do meu homedir: -)
por 15.04.2013 / 19:22
7

Se você usar chaves para o login SSH, poderá alterar o caminho inserindo command= antes de uma chave em ~/.ssh/authorized_keys no seu servidor remoto . Exemplo:

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

É bom gerar e usar várias chaves para o mesmo usuário. Uma chave no servidor pode conter o comando que o outro não pode - desta forma você seleciona o comportamento esperado no momento do login. Você pode simplesmente envolvê-lo com 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

Isso é o que ocorrerá:

local$ ssh websites-my-host
webmaster@realhostname:/var/www/websites$ _

ou:

local$ ssh my-host
webmaster@realhostname:~$ _
    
por 24.12.2016 / 02:03
3

Openssh sshd por padrão aceita estas variáveis de ambiente do cliente:

AcceptEnv LANG LC_*

Você pode usar isso para enviar um valor do ambiente local do cliente para o servidor da seguinte forma:

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server

Você pode colocar a diretiva SendEnv em ~ / .ssh / config para que você não precise incluí-la na linha de comando.

Se você colocar o seguinte em seu ~ / .profile (para afetar somente os logins interativos, use .profile, para afetar todos os logins que usam .bashrc):

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

Em seguida, ele mudará automaticamente o diretório para o especificado na variável de ambiente quando você fizer login, se estiver especificado e se for um diretório.

    
por 25.10.2017 / 16:38