GNU/Linux >> Tutoriales Linux >  >> Linux

cargando alias de shell locales a la sesión ssh dinámicamente

Puedes copiar temporalmente tu .bashrc a su máquina remota con otro nombre. Por ejemplo, usando .bashrc_temp :

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

Luego puede iniciar sesión en la máquina remota:

[email protected]$ ssh [email protected]

y source el archivo .bashrc_temp :

[email protected]$ source ~/.bashrc_temp

Ahora puedes usar tu .bashrc y tus funciones. Cuando haya terminado con su trabajo, puede eliminar el archivo ~/.bashrc_temp en la máquina remota y cerrar la sesión.

La copia del archivo y el inicio de sesión en la máquina remota se pueden lograr con una función 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
}

Actualizar :

También puede considerar copiar el .bashrc a /tmp en su máquina remota y fuente /tmp/.bashrc_temp .

Actualización 2 :

Puede iniciar sesión en la máquina remota usando ssh -t. Esto usará automáticamente su temperatura .bashrc . Función actualizada s() :

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

jens-na proporcionó una excelente respuesta. Pasé un poco de tiempo y lo volví a trabajar un poco para que funcionara un poco mejor. De esta forma, puede pasar cualquier parámetro a SSH, como números de puerto. La diferencia es que usa el ssh comando para subir el .bashrc archivo, en lugar de scp , que usa diferentes nombres de parámetros de comando.

También notará que carga un archivo diferente, .bashrc_remote , para que pueda seleccionar exactamente lo que desea obtener en servidores remotos, en lugar de todo

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

Ejecútelo de la siguiente manera:

sshs [email protected]

El nombre 'sshs ' es para "Fuente SSH". Utilice ssh cuando no quiera buscar y use sshs cuando lo hagas.

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


Creo que sshrc es lo que estás buscando:https://github.com/Russell91/sshrc

sshrc funciona igual que ssh, pero también genera ~/.sshrc después de iniciar sesión de forma remota.

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

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

Puede usar esto para establecer variables de entorno, definir funciones y ejecutar comandos posteriores al inicio de sesión. Es así de simple y no afectará a otros usuarios en el servidor, incluso si también usan sshrc. Para una configuración más avanzada, continúa leyendo.


Linux
  1. Alias ​​de línea de comandos en el shell de Linux

  2. ¿Cómo terminar la conexión SSH que no responde en Linux?

  3. ¿Comportamiento inesperado de un script de Shell?

  4. Ssh:¿registro de intentos de acceso Ssh?

  5. Ctrl-c Manejo en sesión Ssh?

¿Ajustar programáticamente / dinámicamente los reenvíos de puerto de sesión Ssh?

Shell seguro:cliente ssh del navegador web Chrome

Cómo enviar datos al portapapeles local desde una sesión SSH remota

linux ejecutar comando de forma remota

Mantener viva la sesión SSH

Acceso solo a tunelización ssh