He descubierto que con la nueva compañía con la que estoy trabajando, a menudo tengo que acceder a servidores Linux con vidas relativamente cortas. En cada uno de estos servidores tengo una cuenta, pero cada vez que se crea una nueva, tengo que pasar por la molestia de transferir mi .bashrc. Sin embargo, es posible que dentro de unos meses ese servidor ya no esté disponible. También tengo que acceder a muchos otros servidores por cortos períodos de tiempo (minutos) en los que simplemente no vale la pena transferirlos a través de mi .bashrc, pero como estoy trabajando en muchos servidores, esto supone mucho tiempo perdido.
No quiero cambiar nada en los servidores, pero me preguntaba si había una manera de tener un .bashrc "por conexión", por lo que cada vez que usaba SSH en un servidor, mi configuración se usaría para esa sesión.
Si esto es posible, sería bueno si pudiera hacer lo mismo con otros archivos de configuración, como los archivos gitconfig.
fuente
Respuestas:
Creo que lo que quieres es (en tu .ssh / config en la máquina desde la que te conectas):
entonces puedes liderar con:
y sigue tu camino alegre. LocalCommand ejecuta el comando en el servidor al que se está conectando cuando llega allí, justo antes de su sesión real.
También me aseguraría de que los sshds en los servidores estén configurados con
PermitLocalCommand yes
Hay muchas formas de ajustar ese LocalCommand para que funcione en su entorno específico: puede curvar desde un servidor web interno o extraerlo de un montaje nfs, por ejemplo.
fuente
; source /path/to/.bashrc
después del comando scp para que se obtenga automáticamente. Finalmente, un aspecto negativo no muy importante de este método es que tengo que escribir mi contraseña dos veces. Pero al final funcionó, así que gracias.source /path/to/.bashrc
se ejecutará en la máquina desde la que se está conectando. Los comandosLocalCommand
no tienen acceso a la sesión ssh.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
Si nunca antes ha accedido al servidor, no habrá ninguna entrada en ~ / .ssh / known_hosts para ello.
Puede buscar un host conocido dado con "ssh-keygen -F", pero tendrá que probar esa salida (grep) ya que ssh-keygen no devuelve falso por omisión. Tenga en cuenta que si se refiere a un host con diferentes identificadores (dirección IP, nombre de host, FQDN), cada uno de ellos se trata como instancias separadas.
Podría escribir un contenedor para ssh que transfiera su entorno de usuario a ese host en el primer inicio de sesión:
ssh-newenv () {if! ssh-keygen -F $ 1 | grep -q "^ # host $ 1 encontrado:"; luego rsync ~ / .bashrc ~ / .bash_profile ~ / .bash_logout $ 1:.; fi; ssh $ 1; }
Si desea hacer esto más robusto, puede verificar la existencia de un archivo de entorno conocido, hash u otro marcador en el host remoto.
fuente
No sé si hay un .bashrc por sesión.
Otra solución sería escribir un pequeño script que transfiera todas sus configuraciones favoritas a su nueva carpeta de inicio.
Tal vez solo haga una carpeta con todas sus configuraciones con rutas y simplemente transfiéralas con scp
me gusta
y luego un
Eso ahorra tiempo.
fuente
No creo que sea posible, dado que ssh no tiene nada que ver con tu
.bashrc
. Es el shell que carga ese archivo, no ssh.Algunas ideas:
SendEnv
opción (consulte lassh_config
página del manual para obtener más información). Si el servidor está configurado correctamente (es decir, tiene el adecuadoAcceptEnv
en sshd_config), puede usarloSendEnv
para copiar sus variables de entorno al host remoto.ProxyCommand
configuración (consulte lassh_config
página de manual) para enviar sus.bashrc
archivos u otros antes de conectarse al host remoto. Sin embargo, eso requeriría algunas pruebas. Además, esté preparado para que esto pueda interferir con scp.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