¿Es posible configurar ssh (en linux) para permitir el acceso solo a túneles? Es decir, ¿el usuario puede configurar túneles pero no puede obtener un shell / acceder a los archivos?
linux
ssh
ssh-tunnel
Segundo
fuente
fuente
-N
, tiene acceso de shell. Esto realmente no resuelve el problema y es peligroso./bin/false
shell, no tendrá acceso al shell, ya que cada sesión de inicio de sesión finalizará de inmediato.En el archivo .ssh / optional_keys del usuario, coloque algo como lo siguiente:
Entonces, básicamente, los controles estarían frente a la clave pública ssh del usuario, separados por un espacio. En el ejemplo, las conexiones que usan la clave pública específica podrán reenviar puertos SSH solo al servidor MySQL de 192.168.1.10 y al servidor web de 10.0.0.16, y no se les asignará un shell (no pty). Está preguntando específicamente sobre la opción "no pty", pero las otras también pueden ser útiles si se supone que el usuario solo debe hacer un túnel a servidores específicos.
Mire la página de manual de sshd para más opciones para el archivo autorizado_claves .
Tenga en cuenta que la experiencia del usuario puede parecer un poco extraña: cuando ingresa, parecerá que la sesión se está bloqueando (ya que no está obteniendo un pie). Está bien. Si el usuario ha especificado el reenvío de puertos con, por ejemplo, "-L3306: 192.168.1.10: 3306", el reenvío de puertos seguirá vigente.
En cualquier caso, pruébalo.
fuente
no-pty
no impide el acceso al shell, simplemente no le da pie al shell. No muestra el mensaje (es decir, "parece que se cuelga"), pero aún puede dar comandos muy bien. Necesita lacommand="..."
opción.ssh/authorized_keys
si desea restringir el acceso de shell desde allí.Proporcione al usuario un shell que solo le permita cerrar sesión, como
/bin/press_to_exit.sh
De esta manera, puede permanecer conectado todo el tiempo que quiera, con los túneles activos, pero sin ejecutar ningún comando.
Ctrl-c
cierra la conexiónfuente
Asigne un shell que no permita que el usuario inicie sesión.
p.ej
evitaría que reciban un aviso de shell y les daría un tiempo de espera de 60 segundos; si no hay una conexión activa durante 60 segundos, saldrá y, por lo tanto, los desconectará por completo (aumente el número según los requisitos).
Tampoco pueden ejecutar un comando remoto, porque ese shell no los deja.
fuente
logout
" en uno normal./sbin/nologin
, que puede personalizar con un mensaje fácil de usar/etc/nologin.txt
.Mi solución es proporcionar al usuario que solo puede estar haciendo un túnel, sin un shell interactivo , para configurar ese shell en / etc / passwd a / usr / bin / tunnel_shell .
Simplemente cree el archivo ejecutable / usr / bin / tunnel_shell con un bucle infinito .
Además, utilice la opción
AllowGroups
yMatch Group
.Completamente explicado aquí: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
fuente