Puede copiar temporalmente su .bashrc
máquina remota con otro nombre. Por ejemplo, usando .bashrc_temp
:
user@local$ scp .bashrc user@remote:~/.bashrc_temp
Luego puede iniciar sesión en la máquina remota:
user@local$ ssh user@remote
y source
el archivo .bashrc_temp
:
user@remote$ source ~/.bashrc_temp
Ahora puede usar sus .bashrc
y sus funciones. Cuando haya terminado con su trabajo, puede eliminar el archivo ~ / .bashrc_temp en la máquina remota y cerrar 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: user@remote
function s() {
scp ~/.bashrc $1:~/.bashrc_temp
ssh $1
}
Actualización :
También puede considerar que copiar el .bashrc
que /tmp
en la máquina remota y la fuente /tmp/.bashrc_temp
.
Actualización 2 :
Puede iniciar sesión en la máquina remota utilizando ssh -t . Esto usará automáticamente su temp .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"
}
/tmp/
. Esto puede ser explotado trivialmente por cualquier otro usuario para ejecutar cualquier código como un usuario que inicia sesión. Esto debería usarsemktemp
para asegurarse de que el archivo temporal tenga un nombre único.jens-na dio una excelente respuesta. Pasé un poco de tiempo y volví a trabajar un poco para trabajar un poco mejor. De esta manera, puede pasar cualquier parámetro a SSH, como los números de puerto. La diferencia es que usa el
ssh
comando para cargar el.bashrc
archivo, en lugar descp
usar nombres de parámetros de comando diferentes.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 todoEjecútelo de la siguiente manera:
El nombre '
sshs
' es para "SSH Fuente". Úselossh
cuando no desee obtenerlo y úselosshs
cuando lo desee.https://gist.github.com/jonahbron/5549848
fuente
Pseudo-terminal will not be allocated because stdin is not a terminal
Creo que sshrc es lo que estás buscando: https://github.com/Russell91/sshrc
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úe leyendo.
fuente
vim $(which sshrc)
y podrá ver el archivo bash. Puede agregar comandos de eco después de cada línea para ver dónde se cuelga.No estoy seguro de las limitaciones, pero pude hacer que esto funcione con algo como:
fuente
RC_DATA
variable.Esto es lo que se me ocurrió. Le permite mantener un archivo rc normal, pero también hacer todo en una conexión ssh (es decir, solo necesita iniciar sesión una vez en lugar de hacer un scp primero).
Sin embargo, no estoy seguro de qué tan grande puede ser ese archivo rc, ya que podría llegar al límite en algún momento.
fuente
Creo que https://github.com/fsquillace/pearl-ssh hace lo que necesita.
Lo escribí hace mucho tiempo antes de que naciera sshrc y tiene más beneficios en comparación con sshrc:
Por ejemplo:
fuente
Una opción para que funcione con una sola sesión SSH es usar una variable para almacenar su archivo bash en lugar de copiarlo.
Parece funcionar para mi.
fuente
Estaba buscando resolver un problema como el tuyo, y me di cuenta de que lo que realmente estaba buscando eran sshfs. ¿Quizás tú también puedas usarlo?
Mi problema era que al hacer ssh'ing, deseaba mantener mis colores, alias, funciones y scripts mientras trabajaba a distancia.
http://fuse.sourceforge.net/sshfs.html
fuente