Umgehen Sie ~ / .profile bei der Remote-Anmeldung an einem Linux-Server

29889
Andrew Hampton

Gibt es eine Möglichkeit, die Ausführung von zu umgehen oder zu verhindern, ~/.profilewenn Sie sich bei einem entfernten Linux-Server mit ssh oder putty anmelden?

30
Warum möchtest du das tun? Warum nicht einfach die Werte in der Datei bearbeiten? (Es ist schließlich dein Profil.) Telemachus vor 15 Jahren 0
Dies ist zum Beispiel nützlich, wenn jemand die .profile-Datei beschädigt hat und Sie keinen direkten Zugriff auf das System haben :) monkey_p vor 15 Jahren 7
Das ist genau die Situation, in der ich mich in monkey_p befunden habe Andrew Hampton vor 15 Jahren 0

5 Antworten auf die Frage

28
massysett

Für bash:

$ ssh hostname "bash --noprofile" 
Ich denke, du brauchst auch die Option -t. grawity vor 15 Jahren 4
ssh -t Hostname "bash --noprofile". Wenn -t nicht da war, bekam ich den Fehler "Standard" muss ein TTY sein. nitins vor 11 Jahren 2
14
Jack M.

Wenn Sie alle Anmeldeskripts zu deaktivieren suchen, können Sie das verwenden --noprofileFlag zu deaktivieren /etc/profile, ~/.profileusw. und --norcdeaktivieren ~/.bashrcwie folgt:

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

Denken Sie daran, dass Sie auch eine alternative Shell starten können, wenn eine verfügbar ist. Ich musste das benutzen, nachdem ich es vermasselt hatte chsh:

$ ssh 127.0.0.1 sh 

Dies führt Sie höchstwahrscheinlich zu einer leeren Hülle (keine Eingabeaufforderung). Geben Sie also ein ls, um sicherzustellen, dass sie funktioniert.

4
Nick Stinemates

Wenn sich Ihr Zielcomputer in einer Bash-Shell befindet:

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

Alternativ können Sie auch ein anderes Profil verwenden

user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile" 
1
goldPseudo

Wie bereits erwähnt, funktioniert das Ausführen von mit dem --noprofileFlag, wenn Sie die Verbindung initiieren, auch wenn Sie eine andere Shell verwenden, kann dies eine Option sein.

Eine Alternative wäre, wenn das Profilskript eine SSH-Verbindung selbst erkennt und sich entsprechend verhält. Da SSH-Verbindungen normalerweise eine Reihe von Umgebungsvariablen setzen, kann dies leicht überprüft werden. Es genügt, wenn Sie am Anfang Ihres Profils so etwas wie die folgenden Zeilen hinzufügen:

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 

Der returnRest des Skripts wird übersprungen, wenn die $SSH_CONNECTIONUmgebungsvariable festgelegt wird, die normalerweise erstellt wird, wenn eine SSH-Verbindung hergestellt wird. Andernfalls wird das Profil normal ausgeführt.

Beachten Sie, dass dies nur das betroffene Profilskript überspringt. Alle anderen Profilskripte (zB /etc/profile:) werden weiterhin verarbeitet, es sei denn, Sie ändern sie gleich.

1
Sphiros O'Kelli

Versuchen Sie auch, ein FTP-Programm wie WinSCP zu verwenden, um die fehlerhafte Anmeldedatei zu löschen. Dies wird es verwerfen, aber Sie sollten sich zumindest an der Standard-Shell anmelden können

oder vielleicht einfach umbenennen. jezmck vor 11 Jahren 0