GNU/Linux >> Znalost Linux >  >> Linux

Změnit výchozí adresář, když jsem SSH na server

Ř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

Linux
  1. Změňte název hostitele serveru Linux

  2. Jak změním kořenový adresář serveru Apache?

  3. Změňte výchozí server DNS v Arch Linuxu

  1. Jak změnit adresář DocumentRoot na Apache na serveru Linux

  2. Jak začnu v bash, když ssh'dám na můj server?

  3. Jak změnit výchozí adresář nového okna z tmux

  1. Jak změnit výchozí adresář Apache 'DocumentRoot' v Linuxu

  2. Ssh – Omezení uživatele Ssh/scp/sftp na adresář?

  3. Jak změnit výchozí verzi PHP v plesku