¿Hay alguna manera de evitar o evitar la ejecución ~/.profile
al iniciar sesión en un servidor Linux remoto utilizando ssh o putty?
¿Hay alguna manera de evitar o evitar la ejecución ~/.profile
al iniciar sesión en un servidor Linux remoto utilizando ssh o putty?
Respuestas:
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:
$ 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 ls
para asegurarse de que funciona.
Si su máquina de destino está en un shell bash:
user@host:/$ ssh hostname "bash --noprofile"
Alternativamente, si hay otro perfil que desea usar
user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
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 --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:
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 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.