Cambia directory predefinita quando I SSH al server


42

Mi chiedevo se c'è un modo per cambiare la directory predefinita in cui vengo messo dopo che SSH nel mio server Ubuntu.

Il 99% delle volte in cui accedo al mio server, accede ai file all'interno di una directory specifica:

/var/www/websites

Esiste un file di configurazione che posso modificare che mi assicurerà di essere inserito direttamente in questa directory quando eseguo l'accesso?

Risposte:


62

Ci sono due modi per raggiungere questo obiettivo:

  • Cambia la tua home directory sul server in / var / www / website (questa non è davvero una buona idea)
  • aggiungi cd /var/www/websitesalla fine del tuo .bashrc. Uso questo sui nostri burattinai perché voglio sempre essere in / etc / puppet / environment / dkaarsemaker al posto del mio homedir :-)

Grazie. Ho modificato il file bash.bashrc che si trovava nella directory / etc. Ha funzionato a meraviglia :)
Bob Flemming

7
Ooh, non lo farei, poiché interessa tutti gli utenti. Meglio modificare /home/yourlogin/.bashrc
Dennis Kaarsemaker

6
Potresti volerlo inserire nel tuo .profileinvece di .bashrc, ma dipende dal tuo caso d'uso. .profileviene eseguito solo per accessi interattivi (es. shell) ma .bashrcviene eseguito anche per accessi non interattivi (es. scp, rsync, ecc.). Inoltre, è più probabile che .profile venga chiamato da shell che non sono bash (es. Zsh).
phord,

.bashrc viene eseguito quando si esegue "exec bash" per aggiornare bash. Cambiare il bashrc per un caso d'uso speciale (qui login ssh) non è utile.
user3123159

14

Se si utilizzano le chiavi per l'accesso SSH, è possibile modificare il percorso anteponendo command=a una chiave ~/.ssh/authorized_keyssul server remoto . Esempio:

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

Va bene generare e usare più chiavi per lo stesso utente. Una chiave sul server può contenere il comando che l'altra potrebbe non avere, 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
webmaster@realhostname:/var/www/websites$ _

o:

local$ ssh my-host
webmaster@realhostname:~$ _

3
Preferisco questa domanda sopra quella accettata. Consente a più utenti di utilizzare lo stesso utente sul server e di essere ancora in grado di personalizzare ciò che accade quando si accede personalmente. Molto più flessibile e corretto come l'altro.
testuser

1
Devi stare molto attento qui poiché l'aggiunta di comandi a ~ / .ssh / authorized_keys influisce sugli altri strumenti basati su ssh come rsync, scp. Questi comandi si bloccheranno semplicemente
warunapww

1
Puoi usare $SSH_ORIGINAL_COMMANDinvece di /bin/bash -lfar funzionare gli strumenti (nel mio caso, hg). O $SHELLse non vuoi hardcode per bash. Non sono sicuro di come ottenere strumenti e accessi umani per entrambi.
Aprire l'

Solo una parola di avvertimento: se hai disabilitato PasswordAuthentication (vedi askubuntu.com/questions/346857/… ) e digiti accidentalmente la tua stringa di comando, potresti bloccarti fuori dal sistema.
karan.dodia,

6

Openssh sshd per impostazione predefinita accetta queste variabili di 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 user@server

È possibile 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 influire solo sugli 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 con quella specificata nella variabile d'ambiente al momento del login, se è specificata e se è una directory.


1
+1 per il LC_*trucco
Orienta il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.