ssh -t hostname "bash --noprofile". Si -t no estaba allí, recibía el error "standard in must be a tty".
nitins
14
Si usted está buscando para desactivar todos los guiones de entrada, se puede utilizar el --noprofileindicador para deshabilitar /etc/profile, ~/.profile, etc., y --norcpara desactivar ~/.bashrceste modo:
$ ssh 127.0.0.1"bash --noprofile --norc"
Tenga en cuenta que también puede lanzar un shell alternativo si hay uno disponible. Tuve que usar esto después de equivocarme en chsh:
$ ssh 127.0.0.1 sh
Esto probablemente lo colocará en un shell en blanco (sin solicitud), así que dele un mensaje lspara asegurarse de que funciona.
Además, intente utilizar un programa FTP como WinSCP para eliminar el archivo de inicio de sesión erróneo. Esto lo descartará, pero al menos debería poder iniciar sesión en el shell predeterminado
Como otros han mencionado, ejecutar bash con la --noprofilebandera cuando inicias la conexión funcionará, aunque si estás usando un shell diferente, esta puede o no ser una opción.
Una alternativa sería hacer que el script de perfil detecte una conexión SSH y se comporte en consecuencia. Dado que las conexiones SSH normalmente establecerán una serie de variables de entorno, esto se puede verificar fácilmente. Debe ser suficiente agregar algo como las siguientes líneas al comienzo de su perfil:
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
El returnomitirá el resto de la secuencia de comandos si el $SSH_CONNECTIONse establece la variable de entorno, que normalmente se crea cada vez que se inicia una conexión SSH. De lo contrario, el perfil se ejecutará normalmente.
Tenga en cuenta que esto solo omitirá el script de perfil afectado. Todos los demás scripts de perfil (p. Ej . /etc/profile:) aún se procesarían a menos que los modifique de manera similar.
Respuestas:
Para bash:
fuente
-t
opción, creo.Si usted está buscando para desactivar todos los guiones de entrada, se puede utilizar el
--noprofile
indicador para deshabilitar/etc/profile
,~/.profile
, etc., y--norc
para desactivar~/.bashrc
este modo:Tenga en cuenta que también puede lanzar un shell alternativo si hay uno disponible. Tuve que usar esto después de equivocarme en
chsh
:Esto probablemente lo colocará en un shell en blanco (sin solicitud), así que dele un mensaje
ls
para asegurarse de que funciona.fuente
Si su máquina de destino está en un shell bash:
Alternativamente, si hay otro perfil que desea usar
fuente
Además, intente utilizar un programa FTP como WinSCP para eliminar el archivo de inicio de sesión erróneo. Esto lo descartará, pero al menos debería poder iniciar sesión en el shell predeterminado
fuente
Como otros han mencionado, ejecutar bash con la
--noprofile
bandera cuando inicias la conexión funcionará, aunque si estás usando un shell diferente, esta puede o no ser una opción.Una alternativa sería hacer que el script de perfil detecte una conexión SSH y se comporte en consecuencia. Dado que las conexiones SSH normalmente establecerán una serie de variables de entorno, esto se puede verificar fácilmente. Debe ser suficiente agregar algo como las siguientes líneas al comienzo de su perfil:
El
return
omitirá el resto de la secuencia de comandos si el$SSH_CONNECTION
se establece la variable de entorno, que normalmente se crea cada vez que se inicia una conexión SSH. De lo contrario, el perfil se ejecutará normalmente.Tenga en cuenta que esto solo omitirá el script de perfil afectado. Todos los demás scripts de perfil (p. Ej .
/etc/profile
:) aún se procesarían a menos que los modifique de manera similar.fuente