web-dev-qa-db-fra.com

Ignorer ~ / .profile lors d'une connexion à distance à un serveur Linux

Existe-t-il un moyen de contourner ou d'empêcher l'exécution de ~/.profile lors de la connexion à un serveur Linux distant à l'aide de ssh ou de putty?

32
Andrew Hampton

Pour bash:

$ ssh hostname "bash --noprofile"
30
massysett

Si vous souhaitez désactiver tous les scripts de connexion, vous pouvez utiliser l'indicateur --noprofile pour désactiver /etc/profile, ~/.profile, etc. et --norc pour désactiver ~/.bashrc de la manière suivante:

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

N'oubliez pas que vous pouvez également lancer un Shell alternatif, le cas échéant. J'ai dû utiliser ceci après avoir bousillé dans chshname__:

$ ssh 127.0.0.1 sh

Cela vous laissera très probablement dans un shell vide (sans invite), donnez-lui un lspour vous assurer qu'il fonctionne.

14
Jack M.

Si votre ordinateur cible est dans un shell bash:

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

Sinon, si vous souhaitez utiliser un autre profil

user@Host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
4
Nick Stinemates

Comme d'autres l'ont mentionné, exécuter bash avec l'indicateur --noprofile lorsque vous établissez la connexion fonctionnera, bien que, si vous utilisez un autre shell, cela peut être une option ou non.

Une alternative serait que le script de profil détecte lui-même une connexion SSH et se comporte en conséquence. Etant donné que les connexions SSH vont normalement définir un certain nombre de variables d’environnement, ceci peut facilement être vérifié. Ajouter quelque chose comme les lignes suivantes au début de votre profil devrait suffire:

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

return ignorera le reste du script si la variable d'environnement $SSH_CONNECTION est définie, ce qui serait normalement créé chaque fois qu'une connexion SSH est établie. Sinon, le profil sera exécuté normalement.

Notez que cela ignorera uniquement le script de profil affecté. Tous les autres scripts de profil (par exemple: /etc/profile) seront toujours traités, sauf si vous les modifiez de la même manière.

1
goldPseudo

Essayez également d’utiliser un programme FTP tel que WinSCP pour supprimer le fichier de connexion erroné. Cela le supprimera, mais au moins vous devriez pouvoir vous connecter au shell par défaut.

1
Sphiros O'Kelli