Modificando .profile para regras SSH

0

Eu gostaria de criar o seguinte script em .profile, para que cada sessão do SSH fosse diretamente para o seu lugar:

  1. Verifique o host especificado (usuário @ host).
  2. Se host = host1 - cd / var / www / site1

etc.

Ajuda! :)

    
por Konzepz 16.12.2010 / 16:37

2 respostas

0

Tenho certeza de que o SSH não envia o nome do host para o servidor (ele apenas o usa localmente para procurar um endereço IP e para verificar as chaves, etc.). Pelo menos, não de uma maneira que possa ser usada em um script de shell.

Veja a saída de env - o único nome do host é canônico, independentemente do nome usado no comando ssh.

Alguns clientes SSH e alguns servidores SSH permitem que o cliente especifique um valor para uma ou mais variáveis de ambiente, possivelmente você poderia usar isso para informar ao servidor para qual diretório alternar. Por exemplo, consulte Configuração, conexão, dados do Putty ou OpenSSH < Opção href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config"> SendEnv .

Caso contrário, você tem um ID de usuário para cada site com um nome de domínio diferente ou você tem que oferecer ao usuário um menu.

    
por 16.12.2010 / 18:03
0

Sua pergunta não está clara: você está alcançando o mesmo host por meio de vários aliases? Você está alcançando hosts diferentes que compartilham um .profile ? Você está tentando executar comandos com base no nome do host de origem ou nos nomes de host de destino?

Se você quiser efeitos diferentes em hosts remotos diferentes, apenas teste o nome do host remoto:

case "$(hostname)" in
  host1) cd /var/www/site1;;
esac

Se você quiser efeitos diferentes no mesmo host, use as diretivas SendEnv em seu ~/.ssh/config para enviar variáveis de ambiente (supondo que você esteja usando o cliente OpenSSH ). Eles precisam ser ativados com uma diretiva AcceptEnv no servidor lado, o que muitas vezes não é o caso. No entanto, LC_* variáveis são normalmente permitidas, portanto, você pode passar informações usando essas variáveis. No lado do cliente, execute LC_VIRTUAL_HOST=site1 ssh common-host.provider.com . No seu .profile no servidor, escreva

case "$LC_VIRTUAL_HOST" in
  host1) cd /var/www/site1;;
esac
    
por 16.12.2010 / 23:56