Talvez você deva analisar a opção ~/.ssh/environment
ou environment
em ~/.ssh/authorized_keys
. Veja a página sshd(8)
man para detalhes.
Eu tenho um problema simples de precisar executar um comando de exportação sobre o ssh, e depois fico logado, mas estou tendo alguns problemas. Embora eu esteja interessado em uma solução para esse problema por vários motivos, o principal deles é que eu possa personalizar minhas guias de terminal para um nome de minha escolha.
Aqui está o comando que tenho até agora:
ssh -t root@somehost "export PROMPT_COMMAND=''; echo -ne '3]0;MY_TAB_NAME'; echo -ne 'ssh -t root@somehost "export PROMPT_COMMAND=''; echo -ne '3]0;MY_TAB_NAME'; echo -ne '%pre%7'; /bin/bash -i"
7'; /bin/bash -i"
Isso é muito doozy, e acho que estou quase lá. A opção -t abre um pty (pseudo terminal), enquanto o / bin / bash -i abre uma sessão bash interativa (permanecendo logado após a execução do comando ssh. O comando de exportação simplesmente limpa o prompt para que o seguinte eco renomeie.
O problema que estou tendo é que a exportação não parece estar sendo executada no shell correto. Acho que estou sentindo falta de algo bem simples.
Além disso, estou tentando fazer isso com base em linha de comando sem ter que usar os vários arquivos .bash. Tenho centenas de servidores aos quais me conecto e tenho uma maneira fácil de marcar todas as conexões, mas preciso apenas de uma forma para nomear cada guia no meu terminal (Mac OS X, disposto a usar o iTerm se houver uma solução mais fácil).
Obrigado!
ssh host -t VAR=VALUE bash --login
I have a simple problem of needing to execute an export command over ssh, and then stay logged in [...]
Só para resolver a sua questão principal, sem procurar muito no resto do seu problema. Se você quiser exportar algumas variáveis (ou outras coisas do ambiente), você pode usar env
.
O comando env
permite executar um programa em um ambiente modificado. Portanto, você pode usá-lo para executar bash -i
no servidor remoto, modificando o ambiente com prazer.
Deixo apenas um exemplo:
hmontoliu@laptop:~$ ssh -t remoteuser@remoteserver env EXPORTEDSTUFF='foo' MOREXPORTEDSTUFF='bar' bash -i
remoteuser@remoteserver's password:
remoteuser@remoteserver:~$ echo $EXPORTEDSTUFF
foo
remoteuser@remoteserver:~$ echo $MOREXPORTEDSTUFF
bar
Verifique a página de manual do env
HTH