Ignora ~ / .profile no login remoto para um servidor linux

28

Existe uma maneira de contornar ou impedir a execução de ~/.profile ao efetuar login em um servidor Linux remoto usando ssh ou putty?

    
por Andrew Hampton 28.09.2009 / 21:49

5 respostas

26

Para o bash:

$ ssh hostname "bash --noprofile"
    
por 28.09.2009 / 21:59
12

Se você quiser desabilitar todos os scripts de login, use o sinal --noprofile para desabilitar /etc/profile , ~/.profile etc. e --norc para desabilitar ~/.bashrc da seguinte forma:

$ ssh 127.0.0.1 "bash --noprofile --norc"

Tenha em mente que você também pode iniciar um shell alternativo, se houver algum disponível. Eu tive que usar isso depois de bagunçar em chsh :

$ ssh 127.0.0.1 sh

Isso provavelmente deixará você em um shell em branco (sem prompt), então dê a ele ls para ter certeza de que está funcionando.

    
por 28.09.2009 / 23:01
3

Se sua máquina de destino estiver em um bash shell:

user@host:/$ ssh hostname "bash --noprofile"

Como alternativa, se houver outro perfil que você deseje usar

user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
    
por 28.09.2009 / 22:55
1

Além disso, tente usar um programa de FTP como o WinSCP para excluir o arquivo de login incorreto. Isto irá descartá-lo, mas pelo menos você deve ser capaz de acessar o shell padrão

    
por 07.07.2012 / 21:30
1

Como outras pessoas mencionaram, execute bash com o sinal --noprofile quando você iniciar a conexão funcionará, embora se você estiver usando um shell diferente, isso pode ou não ser uma opção.

Uma alternativa seria fazer com que o script de perfil detectasse uma conexão SSH e se comportasse de acordo. Como as conexões SSH normalmente configuram um número de variáveis de ambiente, isso pode ser verificado facilmente. Adicionar algo como as seguintes linhas ao início do seu perfil deve ser suficiente:

if [ "$SSH_CONNECTION" != "" ]; then
  echo Logging in with ssh
  return
else
  echo Logging in with something that is not ssh
fi

# rest of your profile goes here

O return ignorará o restante do script se a variável de ambiente $SSH_CONNECTION estiver definida, o que normalmente seria criado sempre que uma conexão SSH fosse iniciada. Caso contrário, o perfil será executado normalmente.

Observe que isso ignorará apenas o script de perfil afetado. Todos os outros scripts de perfil (por exemplo, /etc/profile ) ainda seriam processados, a menos que você os modifique de maneira semelhante.

    
por 29.09.2009 / 00:15