Após o login do ssh no servidor, execute o .profile customizado e modifique o ambiente do shell

1

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.

    
por studog 17.08.2017 / 19:14

1 resposta

0

An expect script is often mentioned. I believe that would work. It just seems... hacky? inelegant? the wrong solution? Something rubs me the wrong way.

O ambiente Hacky exige soluções "hacky". Se você tivesse configurado adequadamente os servidores com seu usuário pessoal, com a casa compartilhada, você poderia configurá-lo em um único local e funcionaria em qualquer lugar fora da caixa.

Se você tiver vários servidores com um único usuário usado por muitos devs, onde não é possível fazer suas próprias alterações, é necessário contornar isso em seu computador e, nesse caso, esperar que o script seja provavelmente um caminho a percorrer .

    
por 18.08.2017 / 10:58

Tags