Ti sei mai trovato in una situazione in cui volevi SSH su un server remoto e cd immediatamente in una directory? Sì? Bene, sei sulla strada giusta! Questo breve tutorial descrive come inserire direttamente SSH in una particolare directory su Linux. Significato:possiamo passare automaticamente a una directory particolare quando accediamo a un sistema remoto tramite SSH. Non solo SSH in una directory specifica, è anche possibile eseguire qualsiasi comando subito dopo la connessione al server remoto tramite SSH.
SSH in una directory particolare di un sistema Linux remoto
Prima di conoscere questo metodo, di solito passavo SSH nel sistema remoto remoto usando il comando:
$ ssh [email protected]
E poi cd in una directory come quella di seguito:
$ cd <some-directory>
È così che cambio in una directory in un sistema remoto. Non più! Non c'è bisogno di usare due comandi separati!!
Ad esempio, il comando seguente mi consente di eseguire SSH in un sistema remoto (192.168.225.52) e automaticamente cd in una directory chiamata "dir1":
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; bash'
Il comando precedente verrà inviato tramite SSH in un sistema remoto (192.168.225.52) e immediatamente cd in una directory denominata '/home/otechnix/dir1' directory e alla fine ti lascio alla shell del sistema remoto.
Qui, il -t flag viene utilizzato per forzare l'allocazione pseudo-terminale, necessaria per una shell interattiva. Se non specifichi questo flag, non verrà visualizzato alcun messaggio. E anche se non aggiungi " bash" al termine del comando precedente, la connessione verrà interrotta e il controllo verrà restituito al sistema locale.
Ecco l'output di esempio del comando precedente:
Ecco alcuni altri comandi di esempio per SSH in una directory particolare:
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; bash --login'
Qui, il --login flag imposta "bash" come shell di accesso.
Oppure,
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; exec bash'
Oppure,
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && exec bash -l'
Qui, il -l flag imposta "bash" come shell di accesso.
Negli esempi precedenti, ho menzionato esplicitamente bash come shell di accesso. Perché, so che Bash è la shell predefinita nel mio sistema remoto. Se non conosci il tipo di shell sul sistema remoto, usa il seguente comando:
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && exec $SHELL'
Crea una directory sul sistema remoto e inserisci automaticamente SSH in essa
Se provi a eseguire SSH in una directory che non esiste nel sistema remoto, vedrai il seguente messaggio dopo l'autenticazione riuscita:
bash: line 0: cd: /home/ostechnix/dir2: No such file or directory
Come puoi vedere, la directory denominata "dir2" non è disponibile nel sistema remoto. Se vuoi creare una directory in un sistema remoto e inserire automaticamente il cd su SSH, esegui semplicemente il seguente comando dal tuo sistema locale:
$ ssh -t [email protected] 'mkdir -p dir2 ; cd /home/ostechnix/dir2 ; bash --login'
Rendere permanenti le modifiche
Se non vuoi digitare manualmente i comandi precedenti ogni volta, aggiungi semplicemente i comandi che desideri eseguire dopo la connessione a un server SSH sul ~/.bashrc del sistema remoto o ~/.bash_profile o ~/.profile file.
Modifica bashrc file:
$ nano ~/.bashrc
Aggiungi i comandi uno per uno. Nel mio caso, sto aggiungendo la seguente riga:
cd /home/ostechnix/dir1 >& /dev/null
Tieni presente che dovresti aggiungere questa riga al .bash_profile del sistema remoto o .bashrc o .profile file, non nel tuo sistema locale. Premi Ctrl+O e premi INVIO per salvare e premi Ctrl+X per chiudere il file.
Infine, esegui il comando seguente per aggiornare le modifiche:
$ source ~/.bashrc
D'ora in poi, ogni volta che accedi (tramite SSH o diretto), il comando cd verrà eseguito e atterrerai automaticamente all'interno della directory "/home/otechnix/dir1".
Esegui comandi su SSH su sistemi Linux remoti
Come ho già detto, questo trucco non consiste solo nel cd nella directory dopo la connessione a un sistema remoto. Puoi anche usare questo metodo per eseguire anche altri comandi.
Ad esempio, il comando seguente ti porterà all'interno della directory '/home/otechnix/dir1' e quindi eseguirà il comando 'uname -a'.
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && uname -a && exec $SHELL'
Altri esempi sull'esecuzione di comandi su SSH su sistemi remoti sono forniti nella guida seguente.
- Esegui comandi su sistemi Linux remoti tramite SSH
Spero che questo aiuti.
Lettura correlata:
- Come fare cd e ls in un comando
- Come eseguire cp o mv e cd in un comando
- Consenti o nega l'accesso SSH a un particolare utente o gruppo in Linux