Lösung 1:
Es gibt zwei Möglichkeiten, dies zu erreichen:
- Ändern Sie Ihr Heimatverzeichnis auf dem Server in /var/www/websites (das ist nicht wirklich eine gute Idee)
- fügen Sie
cd /var/www/websites
hinzu bis zum Ende Ihrer.bashrc
. Ich verwende dieses für unsere Puppetmaster, da ich dort immer in /etc/puppet/environments/dkaarsemaker sein möchte, anstatt in meinem Homedir :-)
Lösung 2:
Wenn Sie Schlüssel für die SSH-Anmeldung verwenden, können Sie den Pfad ändern, indem Sie command=
voranstellen bis vor eine Taste in ~/.ssh/authorized_keys
auf Ihrer Fernbedienung Server. 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 kann den Befehl enthalten, der andere nicht – auf diese Weise wählen Sie das erwartete Verhalten zur Anmeldezeit aus. Sie können es einfach mit local abschließen ~/.ssh/config
:
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]:~$ _
Lösung 3:
Openssh sshd akzeptiert standardmäßig diese Umgebungsvariablen vom Client:
AcceptEnv LANG LC_*
Sie können das 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 Direktive SendEnv in ~/.ssh/config platzieren, sodass Sie sie nicht in die Befehlszeile einfügen 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 es automatisch in das Verzeichnis, das in der Umgebungsvariable angegeben ist, wenn Sie sich anmelden, wenn es angegeben ist und es sich um ein Verzeichnis handelt.
Lösung 4:
Seit OpenSSH 7.6 können Sie die neue RemoteCommand-Option verwenden, um dies zu erreichen.
In Ihrem ~/.ssh/config
:
Host websites-my-host
HostName <realhostname>
IdentityFile ~/.ssh/keyfile
User webmaster
RequestTTY force # check if this is necessary
RemoteCommand cd /var/www/websites && bash -l