Descobri que, com a nova empresa em que estou trabalhando, muitas vezes tenho que acessar servidores linux com vida útil relativamente curta. Em cada um desses servidores, tenho uma conta, mas sempre que uma nova é criada, tenho que passar pelo trabalho de transferir pelo meu .bashrc. É possível, no entanto, que dentro de alguns meses o servidor não esteja mais por perto. Também tenho que acessar muitos outros servidores por curtos períodos de tempo (minutos), onde simplesmente não vale a pena transferir pelo meu .bashrc, mas como estou trabalhando em muitos servidores, isso gera muito tempo desperdiçado.
Não quero alterar nada nos servidores, mas fiquei pensando se havia uma maneira de ter um .bashrc "por conexão"; portanto, sempre que eu usasse o SSH para um servidor, minhas configurações seriam usadas para essa sessão.
Se isso for possível, seria bom se eu pudesse fazer a mesma coisa com outros arquivos de configuração, como os arquivos gitconfig.
fonte
Respostas:
Eu acho que o que você quer é (no seu .ssh / config na máquina da qual você se conecta):
então você pode liderar com:
e esteja no seu caminho alegre. LocalCommand executa o comando no servidor ao qual você está se conectando quando chega lá, imediatamente antes da sua sessão real.
Eu também garantiria que os sshds nos servidores estejam configurados com o
PermitLocalCommand yes
Existem várias maneiras de ajustar esse LocalCommand para fazê-lo funcionar em seu ambiente específico - você pode se enrolar a partir de um servidor Web interno ou extrair de uma montagem nfs, por exemplo.
fonte
; source /path/to/.bashrc
após o comando scp para que ele seja originado automaticamente. Finalmente, um aspecto negativo não muito importante desse método é que eu tenho que digitar minha senha duas vezes. Mas no final funcionou, então obrigado.source /path/to/.bashrc
será executado na máquina da qual você está se conectando. Os comandosLocalCommand
não têm acesso à sessão ssh.Acho que sshrc é o que você está procurando: https://github.com/Russell91/sshrc
Você pode usar isso para definir variáveis de ambiente, definir funções e executar comandos pós-login. É simples e não afetará outros usuários no servidor - mesmo que eles usem sshrc também. Para uma configuração mais avançada, continue lendo.
fonte
Se você nunca acessou o servidor antes, não haverá entrada em ~ / .ssh / known_hosts para ele.
Você pode procurar um determinado host conhecido com "ssh-keygen -F", mas precisará testar essa saída (grep), pois o ssh-keygen não retorna false por falta. Observe que, se você se referir a um host por identificadores diferentes (endereço IP, nome do host, FQDN), esses serão tratados como instâncias separadas.
Você pode escrever um wrapper para ssh que transfira seu ambiente de usuário para esse host no primeiro login:
ssh-newenv () {if! ssh-keygen -F $ 1 | grep -q "^ # host $ 1 encontrado:"; então rsync ~ / .bashrc ~ / .bash_profile ~ / .bash_logout $ 1:.; fi; ssh $ 1; }
Se você quiser tornar isso mais robusto, verifique a existência de um arquivo de ambiente conhecido, hash ou outro marcador no host remoto.
fonte
Não sei se existe um .bashrc por sessão.
Outra solução seria escrever um pequeno script que transfira todas as suas configurações favoritas para sua nova pasta pessoal.
Talvez apenas crie uma pasta com todas as suas configurações com caminhos e apenas transfira-as com scp
gostar
e então um
Isso economiza tempo.
fonte
Eu não acho que isso é possível, dado que o ssh não tem nada a ver com o seu
.bashrc
. É o shell que carrega esse arquivo, não o ssh.Algumas ideias:
SendEnv
opção (consulte assh_config
página de manual para obter mais informações). Se o servidor estiver configurado corretamente (ou seja, ele possui o adequadoAcceptEnv
em sshd_config), você pode usarSendEnv
para copiar suas variáveis de ambiente para o host remoto.ProxyCommand
configuração (consulte assh_config
página de manual) para enviar seus.bashrc
ou outros arquivos antes de se conectar ao host remoto. Isso exigiria alguns testes, no entanto. Além disso, esteja preparado para que isso possa interferir no scp.fonte
Acho que https://github.com/fsquillace/pearl-ssh faz o que você precisa.
Eu escrevi há muito tempo antes do sshrc nascer e ele tem mais benefícios em comparação com o sshrc:
Por exemplo:
fonte