Alterar o caminho padrão para quando eu SSH no servidor CentOS?

12

Eu tenho um servidor web CentOS 5.7 e desejo alterar o local padrão em que aterro ao me conectar usando o SSH.

Atualmente, aterro /home/usernamee quero aterrar em seu /homelugar.

Fui como root e adicionei PermitUserEnvironment yesa /etc/.ssh/sshd_config- e, como eu o entendo, isso varre a sshpasta do próprio usuário para um environmentarquivo. O que não tenho certeza é exatamente o que estou adicionando a esse arquivo de ambiente, pois export path=$PATH:$HOMEparece não funcionar, aqui ou nos meus arquivos .bashrc ou .bash_profile (que, pelo que entendi, não faria diferença) mesmo assim, como uma conexão SSH é um shell não interativo?).

Desde já, obrigado.

Ben
fonte

Respostas:

14

Se você estiver usando o PAM para autenticação, provavelmente é o mais provável. Como cabeça de raiz /etc/passwd.

Lá você deve ver seu nome de usuário e caminho! Mudá-lo lá e você está em casa grátis!

EDIT - Desculpe, me ocorreu que talvez você não queira alterar sua pasta pessoal. Nesse caso, basta adicionar:

cd /home

No final do seu .bashrcarquivo!

Stevie I
fonte
4
É melhor usar usermodquando mudar qualquer coisa sobre um usuário que grava /etc/passwd, para evitar erros: usermod -d /home user.
Laebshade
1
Esse comentário lateral .bashrcme deixou cara a cara. É tão simples e óbvio, gostaria de ter pensado nisso! Bom trabalho. Parabéns!
cwallenpoole
4

O que é preciso lembrar é que ~/.ssh/environmenté lido antes que um shell ou sshcomando seja gerado, portanto (por exemplo) nem exportar nem $ PATH fazem sentido. Você só pode definir variáveis ​​de ambiente (não executar comandos gerais do shell) aqui.

Se você pegar o ambiente para um shell ssh não interativo e modificá-lo, deverá obter o que deseja para comandos não interativos. Por exemplo:

$ ssh mylogin@myserver env

lhe dará o que o ssh inicia no seu servidor. Se você escrever seu ~/.ssh/environmentarquivo como:

PATH=/usr/local/bin

e execute novamente o procedimento acima, você deve obter "bash: env: command not found". Boa!

Agora, construa seu caminho explicitamente, com base no que estava na base do sistema sshd (por exemplo, a primeira chamada "ssh .... env"), por exemplo (adicionando /usr/local/binna cabeça):

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Observe também que não é útil tentar definir o CWD ~/.ssh/rc(que é executado depois da ~/.ssh/environmentleitura, mas antes do seu sshshell ou comando), pois o seu shell será iniciado (por padrão) em seu caminho inicial.

Yarko
fonte
duplo +1, eu estava procurando em toda parte por essas informações
spinup 17/06/17