ssh -t nome do host "bash --noprofile". Se -t não estava lá, eu estava recebendo o erro "padrão em deve ser um tty".
nitins
14
Se você estiver olhando para desativar todos os scripts de login, você pode usar o --noprofilesinalizador para desativar /etc/profile, ~/.profileetc. e --norcpara desativar ~/.bashrcassim:
$ ssh 127.0.0.1"bash --noprofile --norc"
Lembre-se de que você também pode iniciar um shell alternativo, se houver um disponível. Eu tive que usar isso depois de estragar em chsh:
$ ssh 127.0.0.1 sh
Isso provavelmente o levará a um shell em branco (sem aviso), portanto, lscertifique-se de que esteja funcionando.
Além disso, tente usar um programa FTP como o WinSCP para excluir o arquivo de login incorreto. Isso irá descartá-lo, mas pelo menos você deve conseguir fazer login no shell padrão
Como outros já mencionaram, executar o bash com o --noprofilesinalizador quando você inicia 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 detecta uma conexão SSH e se comporte de acordo. Como as conexões SSH normalmente definem um número de variáveis de ambiente, isso pode ser facilmente verificado. 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
Ele returnignorará o restante do script se a $SSH_CONNECTIONvariável de ambiente estiver definida, que normalmente seria criada sempre que uma conexão SSH for 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 da mesma forma.
Respostas:
Para o bash:
fonte
-t
opção, eu acho.Se você estiver olhando para desativar todos os scripts de login, você pode usar o
--noprofile
sinalizador para desativar/etc/profile
,~/.profile
etc. e--norc
para desativar~/.bashrc
assim:Lembre-se de que você também pode iniciar um shell alternativo, se houver um disponível. Eu tive que usar isso depois de estragar em
chsh
:Isso provavelmente o levará a um shell em branco (sem aviso), portanto,
ls
certifique-se de que esteja funcionando.fonte
Se sua máquina de destino estiver em um shell bash:
Como alternativa, se houver outro perfil que você deseja usar
fonte
Além disso, tente usar um programa FTP como o WinSCP para excluir o arquivo de login incorreto. Isso irá descartá-lo, mas pelo menos você deve conseguir fazer login no shell padrão
fonte
Como outros já mencionaram, executar o bash com o
--noprofile
sinalizador quando você inicia 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 detecta uma conexão SSH e se comporte de acordo. Como as conexões SSH normalmente definem um número de variáveis de ambiente, isso pode ser facilmente verificado. Adicionar algo como as seguintes linhas ao início do seu perfil deve ser suficiente:
Ele
return
ignorará o restante do script se a$SSH_CONNECTION
variável de ambiente estiver definida, que normalmente seria criada sempre que uma conexão SSH for 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 da mesma forma.fonte