Determinar el nombre de la cuenta de la máquina remota del usuario que inició sesión a través de SSH

Determinar el nombre de la cuenta de la máquina remota del usuario que inició sesión a través de SSH

En la empresa donde trabajo tenemos ciertas cuentas compartidas que cualquiera puede usar a través de SSH para realizar tareas específicas. En este punto, tenemos demasiados usuarios y cada uno de ellos tiene sus propias ventajas de usabilidad, como alias de shell, etc.

Lo que estoy tratando de hacer es permitir que los usuarios tengan diferentes configuraciones de shell dependiendo ~/.bash_profilede quién inició sesión. Por ejemplo, cuando Jonathan inicia sesión, quiero que el shell se ejecute adicionalmente ~/.Jonathan_profile, y para Bob, quiero que el shell genere ~/.Bobel perfil.

Sin embargo, no estoy seguro de si hay una manera de saber el nombre de la cuenta en la máquina remota de un usuario que inició sesión mediante SSH.

Cualquier sugerencia es muy apreciada.

Respuesta1

No puedes saber qué cuenta está usando el cliente porque el cliente no te lo dice. Pero hay estas cosas quepoderhacer:

  1. Cree cuentas separadas y brinde a los usuarios acceso a la cuenta compartida usando sudo. Esta es la opción realmente preferida que ofrece la mejor auditoría (siempre se registra quién hace qué) y los usuarios pueden poner las utilidades que quieran en sus cuentas. Sin embargo, también supone la mayor parte del trabajo.

  2. Utilice únicamente la autenticación de clave pública y establezca la variable de entorno desde allí utilizando la sintaxis:

    environment="END_USER=whoever" ssh-rsa asdfasdfr...
    

    en .ssh/authorized_keys. De lo que miras $END_USERen .profile. Obviamente debes configurarlo para cada clave pública utilizada para iniciar sesión.

  3. Dígales a todos que configuren la variable de entorno del cliente usando la SendEnvopción (el servidor debe tener AcceptEnvel conjunto correspondiente). Nuevamente verificas la variable en .profile.

  4. Obtenga la IP y el puerto de origen de la SSH_CONNECTIONvariable y utilícelos identpara obtener el usuario de origen real; pero identdtendría que ejecutarse en los clientes y rara vez lo es hoy en día, porque no es muy útil, pero sí es útil para que un atacante potencial obtenga información sobre su sistema.

  5. Para una personalización más complicada dentro de una sola cuenta, siempre es posible escribir un contenedor de shell personalizado y usarlo con el commandatributo en claves autorizadas. También requiere bastante trabajo, pero se puede utilizar para implementar casi cualquier restricción y auditoría sin tener que crear cuentas separadas.

Nota: Sin duda, recomendaría utilizar únicamente claves públicas y deshabilitar la contraseña. De esa manera, si desea cancelar el acceso de alguien, simplemente elimine su clave.

información relacionada