Preâmbulo
Eu trabalho em um ambiente com muitos servidores e desenvolvedores. Os servidores são geralmente configurados para facilitar o uso, então todos nós logamos em uma conta comum. Estes são servidores somente internos, portanto a segurança não é uma grande preocupação. A maioria dos desenvolvedores, inclusive eu, adiciona sua chave pública a ~/.ssh/authorized_keys
.
Gostaria de ter minhas personalizações habituais do ambiente disponíveis após o login.
O que eu faço atualmente manualmente
studog@doghouse:~# ssh example.local
common@example:~# . ./studog_profile
common@example:~#
Eu gostaria que isso ocorresse automaticamente.
Crédito extra: gostaria de sempre enviar meu .studog_profile
atual e, por isso, sempre tenho minhas personalizações atuais disponíveis.
Idealmente:
studog@doghouse:~# ssh example.local
common@example:~#
e .studog_profile
já foram adquiridos e minhas personalizações estão disponíveis.
Restrições
- Meu
.studog_profile
contém a configuração da variável de ambiente, incluindo
Alterações de PATH, aliases e declarações de função.
- Eu posso enviar arquivos com nome exclusivo para servidores (e modificar
.ssh/authorized_keys
), mas não posso alterar configurações comuns como ~/.bashrc
ou /etc/ssh/sshd_config
.
- Muitas vezes eu ssh da minha casinha, mas muitas vezes ssh entre servidores. UMA
solução precisa funcionar em ambas as situações. Eu não espero poder
para enviar meu perfil personalizado entre servidores.
Coisas que não funcionam
-
%código%. Isso funciona
meu perfil, mas depois as alterações do ambiente são perdidas quando o login
O shell é executado.
- Alterando
ssh -t example.local '. ./.studog_profile; bash -l'
nos servidores. Veja a restrição acima sobre
alterando configurações comuns. No entanto, eu provavelmente poderia
longe com isso, mas, ssh não fornece uma maneira de ver o que o 'começo
do tubo ssh 'é. .bashrc
e SSH_CLIENT
contêm o IP
endereço do servidor de origem para o salto atual, mas há
nada que contenha a identidade da máquina na qual estou digitando.
Perguntas que li e que não funcionam para mim
Coisas que eu não tentei
Expectativa
ssh tem algum método para enviar um comando de pós-login para o servidor remoto, provavelmente uma palavra-chave em bash -l
. Eu não consegui encontrar nada. Eu acho isso estranho porque aceitar a entrada do teclado e enviá-lo para o servidor remoto é quase o mesmo que ler um comando do arquivo de configuração e enviá-lo para o servidor remoto.
Eu tenho que pensar que isso está faltando porque é uma falha de segurança, mas não consigo ver o que esse buraco pode ser.
Espero poder modificar a fonte OpenSSH e criar o que preciso, mas isso consome tempo. Além disso, se for uma falha de segurança, meu pedido de pull provavelmente será ignorado.
Espero ter coberto todas as bases. Estou postando na esperança de ter perdido alguma coisa.