Modificando .profile para regras SSH

Modificando .profile para regras SSH

Desejo criar o seguinte script em .profile, para que cada sessão SSH vá diretamente para seu lugar:

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

etc.

Ajuda! :)

Responder1

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 verificar chaves, etc.). Pelo menos, não de uma forma que possa ser usada em um script de shell.

Veja a saída de env- o único nome de host é o 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, veja Massaconfiguração, conexão, dadosou OpenSSHEnviarEnvopção.

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

Responder2

Sua pergunta não está clara: você está acessando 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 do host de destino?

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

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

Se você quiser efeitos diferentes no mesmo host, você pode usar as SendEnvdiretivas no seu~/.ssh/configpara enviar variáveis ​​de ambiente (supondo que você esteja usando oOpenSSHcliente). Eles precisam ser habilitados com umAcceptEnvdiretiva no lado do servidor, o que muitas vezes não é o caso. No entanto, LC_*as variáveis ​​normalmente são permitidas, portanto você pode passar informações usando-as. No lado do cliente, execute LC_VIRTUAL_HOST=site1 ssh common-host.provider.com. No seu .profileservidor, escreva

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

informação relacionada