Você pode usar a abordagem descrita no link
Você terá que usar o PermitLocalCommand e o LocalCommand para conseguir isso.
Eu acho que a solução é Ok, mas eu não gostei, pois irá substituir o .bashrc da máquina remota por scp
ing meu .bashrc local para o .bashrc remoto. Também não consegui fazer funcionar exatamente como eu esperava.
Outra solução é usar o git para gerenciar todos os seus arquivos de ponto, como descrito em
Mas um grande problema para mim é que eu teria que configurar cada servidor com meus arquivos de ponto. Mesmo se eu tivesse tempo (e paciência) para implantar meus arquivos de pontos em cada servidor, eu ainda teria um problema.
Imaginando um contexto em que mais de um usuário faz login no mesmo servidor usando o mesmo login, seria injusto alterar os padrões do servidor para os padrões meu .
Então ...
Então, desenvolvi minha própria solução para isso, espero que você goste e ache útil:
Você precisará:
- Crie uma essência (privada) no link do seu .bashrc
- Você precisará de um login no github para criar uma essência
- Preste atenção a informações confidenciais, como senhas, em variáveis de ambiente .bashrc. De qualquer forma esse tipo de informação não deveria estar lá em primeiro lugar.
- Analise o nome que você deu para o arquivo gist. Eu vou chamar isso de GISTNAME . Escolha um nome que é improvável encontrar no diretório remoto. Não o chame de ".bashrc" por favor. =) Um bom nome seria
mycustombashrc.sh
- Depois de salvar a essência, obtenha o link da versão raw clicando no botão
<>
. Você precisará desse link, o link de essência ou RAWGISTLINK
Em seguida, no seu local .bashrc
, coloque o seguinte no final:
function customssh(){
ssh $@ -t 'cd $HOME ;
wget --quiet -N "RAWGISTLINK" ;
cp GISTNAME .'$USER'bashrc ;
bash --rcfile $HOME/.'$USER'bashrc'
}
Lembre-se para substituir GISTNAME e RAWGISTLINK
Agora corra
source ~/.bashrc
E, em seguida, use apenas customssh
(você ainda terá o ssh
normal)
customssh mylogin@remoteserver
Tente um dos seus alias agora!
Notas
- Sim, isso provavelmente fará o download do arquivo gist em cada login, mas acredite, é muito rápido. Não se preocupe.
- Para atualizar o .bashrc compartilhado
- Vá para a URL da gist e faça as alterações (ou copie o local .bashrc para ele).
- Em seguida, atualize a função customssh substituindo o RAWGISTLINK com o novo RAWGISTLINK (o link gist e GISTNAME é o mesmo, mas o link bruto do gist muda quando você faz alterações no arquivo).
- Agora é só executar
source ~/.bashrc
. É isso! Não há necessidade de mudar nada em seus servidores remotos!
- Minha solução é totalmente baseada no Ubuntu, talvez precise de alguns ajustes para funcionar com outras distros
- Você provavelmente pode usar outros serviços como o gist em vez da essência do github. O Pastebin é um exemplo, mas existem outros. É totalmente possível, mas ainda não tentei.
- Você também pode
wget
do seu custombashrc.sh de outros lugares. Um servidor web público, por exemplo. - Outra opção, se a sua máquina local estiver visível na Internet por meio do ssh, você poderá apenas
scp
do arquivo do servidor local (usando o endereço público) para o servidor remoto. Não usei essa solução porque é difícil supor que sua máquina local não ficará oculta atrás de um roteador ou firewall (no meu caso, estou atrás de um roteador) - Talvez você encontre problemas em diferentes versões do Ubuntu, mas ainda não consegui encontrá-los.
A melhor coisa sobre essa abordagem é que ela não muda nada nos servidores remotos e com pouco esforço na máquina local e com a essência você obtém toda a diversão do seu local .bashrc em qualquer servidor que você queira.
E você ainda pode facilmente "desativar" isso usando ssh
em vez de customssh
.