GNU/Linux >> Linux Esercitazione >  >> Linux

caricamento dinamico degli alias della shell locale nella sessione ssh

Puoi copiare temporaneamente il tuo .bashrc alla tua macchina remota con un altro nome. Ad esempio, utilizzando .bashrc_temp :

[email protected]$ scp .bashrc [email protected]:~/.bashrc_temp

Successivamente puoi accedere al computer remoto:

[email protected]$ ssh [email protected]

e source il file .bashrc_temp :

[email protected]$ source ~/.bashrc_temp

Ora puoi usare il tuo .bashrc e le tue funzioni Quando hai finito con il tuo lavoro puoi rimuovere il file ~/.bashrc_temp sul computer remoto e disconnetterti.

La copia del file e l'accesso alla macchina remota possono essere ottenuti con una funzione bash:

# copy the .bashrc to the remote machine 
# and log into the remote machine.
# parameter $1: [email protected]
function s() {
  scp ~/.bashrc $1:~/.bashrc_temp
  ssh $1
}

Aggiorna :

Puoi anche considerare di copiare il .bashrc a /tmp sulla tua macchina remota e sorgente /tmp/.bashrc_temp .

Aggiornamento 2 :

Puoi accedere alla macchina remota usando ssh -t. Questo utilizzerà automaticamente il tuo temp .bashrc . Funzione aggiornata s() :

function s() {
  scp ~/.bashrc $1:/tmp/.bashrc_temp
  ssh -t $1 "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

jens-na ha fornito una risposta eccellente. Ho passato un po 'di tempo e l'ho rielaborato un po' per funzionare un po' meglio. In questo modo, puoi passare qualsiasi parametro a SSH, come i numeri di porta. La differenza è che usa il ssh comando per caricare il .bashrc file, invece di scp , che utilizza nomi di parametri di comando diversi.

Noterai anche che carica un file diverso, .bashrc_remote , in modo che tu possa selezionare esattamente ciò che vuoi trovare su server remoti, invece di tutto

sshs() {
        ssh [email protected] "cat > /tmp/.bashrc_temp" < ~/.bashrc_remote
        ssh -t [email protected] "bash --rcfile /tmp/.bashrc_temp ; rm /tmp/.bashrc_temp"
}

Eseguilo come segue:

sshs [email protected]

Il nome 'sshs ' sta per "Fonte SSH". Usa ssh quando non vuoi la fonte, e usa sshs quando lo fai.

https://gist.github.com/jonahbron/5549848


Penso che sshrc sia quello che stai cercando:https://github.com/Russell91/sshrc

sshrc funziona proprio come ssh, ma genera anche ~/.sshrc dopo l'accesso remoto.

$ echo "echo welcome" > ~/.sshrc
$ sshrc [email protected]
welcome

$ echo "alias ..='cd ..'" > ~/.sshrc
$ sshrc [email protected]
$ type ..
.. is aliased to `cd ..'

Puoi usarlo per impostare variabili di ambiente, definire funzioni ed eseguire comandi post-accesso. È così semplice e non avrà alcun impatto sugli altri utenti sul server, anche se usano anche sshrc. Per una configurazione più avanzata, continua a leggere.


Linux
  1. Alias ​​della riga di comando nella shell di Linux

  2. Come inviare dati agli appunti locali da una sessione SSH remota

  3. Impedisce a ssh di suddividere i parametri dello script della shell

  4. SSH senza sourcing .bashrc

  5. accesso solo tunneling ssh

Come terminare la connessione SSH che non risponde in Linux?

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

Ssh – Registrazione dei tentativi di accesso Ssh?

Ctrl-c Gestione nella sessione Ssh?

Regolare in modo programmatico/dinamico il port forwarding della sessione Ssh?

Secure Shell:client ssh del browser Web Chrome