it-swarm.com.de

Ändern Sie das Standardverzeichnis, wenn ich SSH auf Server

Ich habe mich gefragt, ob es eine Möglichkeit gibt, das Standardverzeichnis zu ändern, in das ich nach dem SSH auf meinem Ubuntu-Server gestellt werde.

In 99% der Fälle, in denen ich mich bei meinem Server anmelde, muss auf Dateien in einem bestimmten Verzeichnis zugegriffen werden:

/var/www/websites

Gibt es eine Konfigurationsdatei, die ich bearbeiten kann, um sicherzustellen, dass ich beim Anmelden direkt in dieses Verzeichnis verschoben werde?

48
Bob Flemming

Es gibt zwei Möglichkeiten, dies zu erreichen:

  • Ändern Sie Ihr Homedirectory auf dem Server in/var/www/sites (dies ist keine wirklich gute Idee).
  • hinzufügen cd /var/www/websites bis zum Ende deines .bashrc. Ich benutze dieses bei unseren Puppenspielern, da ich immer in/etc/Puppet/Environment/Dkaarsemaker sein möchte, anstatt in meinem Homedir :-)
67

Wenn Sie Schlüssel für die SSH-Anmeldung verwenden, können Sie den Pfad ändern, indem Sie command= Vor einen Schlüssel in ~/.ssh/authorized_keys Auf Ihrem Remote Server stellen. Beispiel:

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

Es ist in Ordnung, mehrere Schlüssel für denselben Benutzer zu generieren und zu verwenden. Ein Schlüssel auf dem Server enthält möglicherweise den Befehl, der andere möglicherweise nicht. Auf diese Weise wählen Sie das erwartete Verhalten bei der Anmeldung aus. Sie können es einfach mit local~/.ssh/config Einschließen:

Host websites-my-Host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-Host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

Folgendes wird passieren:

local$ ssh websites-my-Host
[email protected]:/var/www/websites$ _

oder:

local$ ssh my-Host
[email protected]:~$ _
16
gertas

Openssh sshd akzeptiert standardmäßig diese Umgebungsvariablen vom Client:

AcceptEnv LANG LC_*

Sie können dies verwenden, um einen Wert aus der lokalen Umgebung des Clients wie folgt an den Server zu senden:

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH [email protected]

Sie können die SendEnv-Direktive in ~/.ssh/config platzieren, damit Sie sie nicht in die Befehlszeile aufnehmen müssen.

Wenn Sie Folgendes in Ihr ~/.profile einfügen (um nur interaktive Anmeldungen zu beeinflussen, verwenden Sie .profile, um alle Anmeldungen zu beeinflussen, verwenden Sie .bashrc):

if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
  cd "$LC_CDPATH";
fi

Dann wechselt das Verzeichnis automatisch in das in der Umgebungsvariablen angegebene Verzeichnis, wenn Sie sich anmelden, wenn es angegeben ist und wenn es sich um ein Verzeichnis handelt.

7
Victor Jerlin