Modificando .profile para reglas SSH

Modificando .profile para reglas SSH

Deseo crear el siguiente script en .profile, para que cada sesión SSH vaya directamente a su lugar:

  1. Verifique el host especificado (usuario@host).
  2. Si host = host1 -- cd /var/www/sitio1

etc.

¡Ayuda! :)

Respuesta1

Estoy bastante seguro de que SSH no envía el nombre de host al servidor (solo lo usa localmente para buscar una dirección IP y verificar claves, etc.). Al menos, no de una manera que pueda usarse en un script de shell.

Vea el resultado de env: el único nombre de host es el canónico, independientemente del nombre que se usó en el comando ssh.

Algunos clientes SSH y algunos servidores SSH permiten al cliente especificar un valor para una o más variables de entorno; posiblemente podría usar esto para indicarle al servidor a qué directorio cambiar. Por ejemplo, vea masilla.configuración, conexión, datoso OpenSSHEnviarEnvopción.

De lo contrario, tiene un ID de usuario para cada sitio web con un nombre de dominio diferente o debe ofrecer al usuario un menú.

Respuesta2

Su pregunta no está clara: ¿está llegando al mismo host a través de varios alias? ¿Está llegando a diferentes hosts que comparten un .profile? ¿Está intentando ejecutar comandos basados ​​en el nombre del host de origen o en los nombres del host de destino?

Si desea diferentes efectos en diferentes hosts remotos, simplemente pruebe el nombre del host remoto:

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

Si desea diferentes efectos en el mismo host, puede utilizar las SendEnvdirectivas en su~/.ssh/configpara enviar variables de entorno (asumiendo que estás usando elAbiertoSSHcliente). Estos deben estar habilitados con unAcceptEnvdirectiva en el lado del servidor, lo que a menudo no es el caso. Sin embargo, LC_*normalmente se permiten variables, por lo que puede pasar información utilizándolas. En el lado del cliente, ejecute LC_VIRTUAL_HOST=site1 ssh common-host.provider.com. En tu .profileservidor, escribe

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

información relacionada