Para o bash:
$ ssh hostname "bash --noprofile"
Existe uma maneira de contornar ou impedir a execução de ~/.profile
ao efetuar login em um servidor Linux remoto usando ssh ou putty?
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.
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"
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
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.