Existe uma maneira de enviar informações de configuração do shell quando o SSHing é para um host?

2

Eu tenho um grupo de coisas boas na minha configuração do bash. Normalmente, quando eu recebo uma nova conta, eu faço isso do meu repositório do GitHub para que eu tenha todos os aliases e recursos que eu tenho costumava. Existem alguns hosts que eu acesso que não tenho minhas próprias contas, mas contas compartilhadas que um monte de pessoas usam, por isso seria rude da minha parte instalar minha configuração de shell.

Existe uma maneira de empurrar minha configuração do shell, ou pelo menos alguns comandos de inicialização, sobre a sessão SSH para que eu tenha o ambiente que eu estou acostumado?

    
por Drew Stephens 09.06.2011 / 20:15

3 respostas

1

Insira resmungo obrigatório sobre contas compartilhadas, mas se você tiver pelo menos sua própria chave ssh, você pode (ab) usar a opção command= no ~/.ssh/authorized_keys file . Uma chave com uma opção de comando é boa apenas para executar o comando especificado; mas o comando no arquivo authorized_keys é executado com a variável de ambiente SSH_ORIGINAL_COMMAND definida para o comando especificado pelo usuário (vazio para sessões interativas). Então você pode usar algo assim em ~/.ssh/authorized_keys :

command="HOME=$HOME/.HOME.drew;
         if [ -n \"$SSH_ORIGINAL_COMMAND\" ]; then
           eval \"$SSH_ORIGINAL_COMMAND\";
         else exec \"$SHELL\"; fi" ssh-rsa AAAA…== [email protected]

Note que coloquei as quebras de linha acima para legibilidade, mas isso realmente precisa estar em uma linha no arquivo authorized_keys .

Em seguida, coloque seus arquivos de configuração favoritos nesse diretório .HOME.drew .

Para uso pontual, você pode fornecer explicitamente um arquivo de perfil ou executar qualquer comando shell. Passe a opção -t para ter um terminal se você quiser executar comandos interativos.

ssh shared-account@server "LS_COLORS='$LS_COLORS' ls --color"
ssh -t shared-account@server '. ~/.profile.drew; exec zsh'

Se você quiser apenas editar ou copiar arquivos na máquina remota, poderá usar um sistema de arquivos de rede, como SSHFS (para clientes unix) ou Tramp (para Emacs) e trabalhe no conforto do seu ambiente local.

    
por 09.06.2011 / 20:48
1

Gosto de manter um arquivo .bsa em algum lugar conveniente (talvez ~ funcione nesse caso), portanto, posso usar apenas . ~/.bsa para obter meu ambiente.

    
por 09.06.2011 / 20:18
0

Talvez tente hackear algo junto com "LocalCommand" (veja man ssh_config)?

    
por 09.06.2011 / 20:27

Tags