Řešení 1:
Existují dva způsoby, jak toho dosáhnout:
- Změňte svůj domovský adresář na serveru na /var/www/websites (to opravdu není dobrý nápad)
- přidejte
cd /var/www/websites
do konce vašeho.bashrc
. Ten používám na naše loutkoherce, protože tam chci být vždycky v /etc/puppet/environments/dkaarsemaker místo mého homedir :-)
Řešení 2:
Pokud pro přihlášení SSH používáte klíče, můžete změnit cestu přidáním command=
před klíč v ~/.ssh/authorized_keys
na dálkovém ovládání server. Příklad:
command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key
Je v pořádku generovat a používat více klíčů pro stejného uživatele. Jeden klíč na serveru může obsahovat příkaz, druhý ne - tímto způsobem zvolíte očekávané chování při přihlášení. Můžete to jednoduše zabalit s místním ~/.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
Toto se stane:
local$ ssh websites-my-host
[email protected]:/var/www/websites$ _
nebo:
local$ ssh my-host
[email protected]:~$ _
Řešení 3:
Openssh sshd standardně přijímá tyto proměnné prostředí od klienta:
AcceptEnv LANG LC_*
Můžete to použít k odeslání hodnoty z místního prostředí klienta na server takto:
LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH [email protected]
Direktivu SendEnv můžete umístit do ~/.ssh/config, takže ji nemusíte zadávat na příkazovém řádku.
Pokud do svého ~/.profile umístíte následující (pro ovlivnění pouze interaktivních přihlášení použijte .profile, pro ovlivnění všech přihlášení použijte .bashrc):
if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
cd "$LC_CDPATH";
fi
Poté automaticky změní adresář na ten, který je uveden v proměnné prostředí, když se přihlásíte, pokud je zadán a pokud se jedná o adresář.
Řešení 4:
Od OpenSSH 7.6 můžete k dosažení tohoto cíle použít novou možnost RemoteCommand.
Ve vašem ~/.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