GNU/Linux >> Linux Esercitazione >  >> Linux

Cambia la directory predefinita quando eseguo SSH sul server

Soluzione 1:

Ci sono due modi per raggiungere questo obiettivo:

  • Cambia la tua directory home sul server in /var/www/websites (questa non è davvero una buona idea)
  • aggiungi cd /var/www/websites fino alla fine del tuo .bashrc . Lo uso sui nostri burattinai perché voglio sempre essere lì in /etc/puppet/environments/dkaarsemaker invece che nella mia homedir :-)

Soluzione 2:

Se utilizzi le chiavi per l'accesso SSH, puoi modificare il percorso anteponendo command= a prima di una chiave in ~/.ssh/authorized_keys sul tuo telecomando server. Esempio:

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

Va bene generare e utilizzare più chiavi per lo stesso utente. Una chiave sul server può contenere il comando, l'altra no, in questo modo si seleziona il comportamento previsto al momento dell'accesso. Puoi semplicemente concludere con local ~/.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

Questo è ciò che accadrà:

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

oppure:

local$ ssh my-host
[email protected]:~$ _

Soluzione 3:

Openssh sshd per impostazione predefinita accetta queste variabili d'ambiente dal client:

AcceptEnv LANG LC_*

Puoi usarlo per inviare un valore dall'ambiente locale del client al server in questo modo:

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

Puoi inserire la direttiva SendEnv in ~/.ssh/config in modo da non doverla includere nella riga di comando.

Se inserisci quanto segue nel tuo ~/.profile (per influenzare solo gli accessi interattivi usa .profile, per influenzare tutti gli accessi usa .bashrc):

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

Quindi cambierà automaticamente la directory in quella specificata nella variabile di ambiente quando accedi, se è specificata e se è una directory.

Soluzione 4:

A partire da OpenSSH 7.6, puoi utilizzare la nuova opzione RemoteCommand per ottenere ciò.

Nel tuo ~/.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. Risolvi i problemi di SSH

  2. PuTTY:modifica la directory di accesso SSH predefinita

  3. Cambia il server DNS predefinito in Arch Linux

  4. Devo cambiare la porta SSH predefinita sui server Linux?

  5. Come modificare la directory predefinita della nuova finestra dall'interno di tmux

Server SSH Ubuntu 20.04

Comando Cd in Linux (Cambia directory)

Server SSH

Ssh:limitare un utente Ssh/scp/sftp a una directory?

Come modificare la versione PHP predefinita in plesk

Come modificare la porta SSH predefinita in Linux [correttamente e in modo sicuro]