¿Se puede ejecutar un comando a través de ssh con un usuario nologin?


13

Si un usuario tiene loginShell=/sbin/nologintodavía es posible

ssh user@machine [command]

suponiendo que el usuario tiene claves ssh adecuadas en su directorio de inicio que se pueden usar para autenticar?

Mi objetivo es mantener al usuario como un nologin, pero aún capaz de ejecutar comandos en algunas otras máquinas de la red (similar a su uso a través de 'sudo -u'), y me pregunto si este es un curso razonable.


1
Deberia de funcionar. El commandse ejecuta en lugar del shell de inicio de sesión.
orion

1
Esto anula el propósito de configurar /sbin/nologincomo un shell. Si su preocupación es la seguridad de la cuenta, entonces deshabilitar la autenticación de contraseña y usar las claves ssh es suficiente.
Creek

@Creek hay una diferencia entre shells de inicio de sesión y otras instancias de shell. Entonces, lo que está preguntando no necesariamente vence el propósito de / sbin / nologin. Es posible que quiera realizar algún trabajo fuera del contexto de un shell de inicio de sesión.
Michael Martinez

77
@orion Incorrecto. El comando es ejecutado por el shell de inicio de sesión.
Gilles 'SO- deja de ser malvado'

@MichaelMartinez en el contexto de su ejemplo, si el shell del usuario es /sbin/nologinentonces el usuario no podrá iniciar sesión o ejecutar comandos en la máquina. cronjobs se puede ejecutar como usuario y sftpse puede configurar para abrir sesiones, pero no se abrirá un shell a través de ssh
Creek

Respuestas:


17

Configuración /sbin/nologincomo shell del usuario (o /bin/false, o /bin/true, lo que es casi equivalente ) prohíbe al usuario de inicio de sesión en ejecutar cualquier comando que sea. SSH siempre invoca el shell de inicio de sesión del usuario para ejecutar comandos, por lo que debe establecer el shell de inicio de sesión en uno que pueda ejecutar algunos comandos.

Existen varios shells restringidos que permiten a los usuarios ejecutar solo unos pocos comandos. Por ejemplo rssh y scponly son dos conchas tales que permiten al usuario ejecutar unos comandos predefinidos (tales como scp, sftp-server, rsync, ...). Consulte también Restringir el acceso de usuarios en Linux y ¿Necesita un shell para SCP?


Gracias, terminé renunciando a darle a la cuenta un shell de inicio de sesión para que pudiera ejecutar los comandos remotos. La mejor solución probablemente habría sido ssh como usuario actual y llamar a sudo -u para el comando ssh, pero eso no es del todo aplicable en mi caso.
Centimane

1

Parece que la respuesta es no.

ssh user@machine [command]

con las teclas ssh en su lugar solo se obtiene:

This account is currently not available

en lugar de ejecutar el comando, parece que tendré que darle acceso a bash.


-4

No sé si eso es posible (aunque debería ser fácil de probar), pero hay una característica que probablemente responde a su pregunta de cierta manera y, en cualquier caso, resuelve su problema.

Puede agregar un comando a la línea clave en authorized_keys. En ese caso, este comando se ejecuta, nada más. Supongo que esto funciona /sbin/nologinya que el shell debe ignorarse de todos modos.

Pero necesitaría una clave diferente para cada comando que permita.


Desafortunadamente, la solución que necesito tendría que ser más flexible que esta
Centimane

si es fácil de probar, entonces debe probarlo antes de escribir una respuesta.
Michael Martinez

@MichaelMartinez Es tarea del interrogador hacer pruebas fáciles antes de preguntar. No es difícil notar que no respondió la pregunta, sino que hizo una propuesta para el problema que causó la pregunta. Lo cual es perfectamente adecuado como respuesta. Desestimar esto es simplemente estúpido. ¿Habrías criticado la respuesta sin el primer párrafo? Exactamente.
Hauke ​​Laging

3
El comando in authorized_keyses ejecutado por el shell de inicio de sesión, por lo que no, esto no funciona (no sin una configuración adicional no trivial). (¿Cómo se downvoting una respuesta incorrecta “estúpida” Por favor? Respetar a los demás .)
Gilles 'SO siendo parada del mal'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.